home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
util
/
virus
/
AntiCicloVir.lha
/
AntiCicloVir
/
AntiCicloVir.s
< prev
next >
Wrap
Text File
|
1992-09-02
|
97KB
|
5,099 lines
; program : AntiCicloVir
; programsort : Viruskiller
; versionsnr. : 2.3a
; genesis date : 17.09.1994
; author : Mathias Gutt
; Kantstr. 16
; 21335 Lüneburg
; Tel.: 04131/49624
; Germany
; This program shows a simple form of virus-hunting
; and so I hope, some novices can find some useful
; routines in AntiCicloVir.
; AntiCicloVir is completely Public Domain and that
; means, you can do everything with the program
; and this source, but read the docs !!!
; You can put out some routines from AntiCicloVir, to
; include them into your own program, or you may use
; AntiCicloVir as base for your own viruskiller, but
; it is not allowed, to use the same name !!!
; AntiCicloVir shows the system-vectors to you,
; looks for known viruses in memory, in the bootsectors
; of every disk from every drive and checks directories
; and files for viruses ...
; I used the masterseka v1.51 to write this one.
; Please excuse my bad anglian !!!
; I know, that this source is not the best one, but
; if you have some questions, please write me !
Execbase = 4
MEMF_PUBLIC = 1
MEMF_CHIP = 2
MEMF_FAST = 4
MEMF_CLEAR = 65536
MEMF_LARGEST = 131072
Addport = -354
AllocMem = -198
AllocSignal = -330
AutoRequest = -348
Close = -36
CloseDevice = -450
CloseLibrary = -414
CloseWindow = -72
CopyMem = -624
CurrentDir = -126
Delay = -$00C6
DeleteFile = -$0048
DisplayAlert = -90
DoIORoutine = -456
Examine = -102
ExNext = -108
FreeMem = -210
FreeSignal = -336
FindName = -276
FindTask = -294
GetMsg = -372
Lock = -84
Open = -$001E
OpenDeviceRoutine = -444
OldOpenLibrary = -408
OpenWindow = -204
Read = -42
RemPort = -360
Rename = -78
SetProtection = -186
SetWindowTitles = -276
UnLock = -90
WaitIO = -474
WaitPort = -384
Write = -$0030
Requester: MACRO ;Macro
lea AutoRequestTextPtr(pc),a0 ;get RequestText
move.l ?1,(a0)
lea GadgetTextPtr(pc),a0 ;get GadgetText
move.l ?2,(a0)
lea GadgetText2Ptr(pc),a0 ;get next GadgetText
move.l ?3,(a0)
move.l #0,a0
lea AutoRequestText(pc),a1 ;get RequestText-structure
lea GadgetText(pc),a2 ;get GadgetText-structure
lea GadgetText2(pc),a3 ;get GadgetText2-structure
moveq #0,d0 ;no IDCMP-Flag
moveq #0,d1 ;no IDMCP-Flag
move.l ?4,d2 ;get Width for Request
move.l ?5,d3 ;get Height for Request
move.l Intuibase(pc),a6 ;get Intuibase
jsr AutoRequest(a6) ;call subroutine
ENDM ;end of macro
Requesterold: MACRO ;Macro
move.l #0,a0
lea ?1,a1 ;get RequestText-structure
lea ?2,a2 ;get GadgetText-structure
lea ?3,a3 ;get Gadget2Text-structure
moveq #0,d0 ;no IDCMP-Flag
moveq #0,d1 ;no IDCMP-Flag
move.l ?4,d2 ;get Width for Requester
move.l ?5,d3 ;get Heigth for Requester
move.l Intuibase(pc),a6 ;get Intuibase
jsr AutoRequest(a6) ;call subroutine
ENDM ;end of macro
move.l a0,ParamAddress ;get ParamAddress
move.l d0,ParamLength ;get ParamLength
;WBStartup-Head
;This routine tries to find out, if AntiCicloVir was
;called from the Workbench or from the Shell.
move.l ExecBase,a6
suba.l a1,a1
jsr FindTask(a6)
move.l d0,a4
tst.l 172(a4)
bne clicall ;was called from shell
lea 92(a4),a0
jsr WaitPort(a6)
lea 92(a4),a0
jsr GetMsg(a6)
bra WBcall ;was called from WB
clicall:
bsr GetPara
move.l Paramaddress(pc),a0
cmp.b #"-",(a0)+ ;look for option-line
bne ScanFiles ;if not go to scanfiles
Option:
cmp.b #"c",(a0) ;look for option c
beq fastcheckset ;if yes, go to fastcheckset
cmp.b #"m",(a0) ;look for option m
beq Clicall2 ;if yes, go to Clicall2
fastcheckset:
move.b #$FF,fastcheck ;set fastcheck-flag
Clicall2:
move.b #$FF,StartupFlag ;set StartupFlag
WBcall:
; This one is a little color-cycling, to greet the
; user !
Colors:
add.l #$00070007,d0
cmp.l #$00FF00FF,d0
bge AntiCicloVir
move.w #1,d1
Colorcycling:
move.b $dff005,d2
ColorcyclingLoop:
move.l d0,$dff180
move.l d0,$dff184
cmp.b $dff005,d2
beq.s ColorcyclingLoop
dbra d1,ColorCycling
bra Colors
AntiCicloVir:
bsr OpenDos ;open DosLib
cmp.l #0,d0 ;error ?
beq Ende ;Yes, end it !
move.l d0,Dosbase ;No, get DosBase
bsr OpenIntui ;open IntuiLib
cmp.l #0,d0 ;error ?
beq CloseDos ;Yes, close DosLib
move.l d0,Intuibase ;No, get Intuibase
cmp.b #$FF,StartupFlag ;was Startup-flag set ?
bne WBStart ;No, go to WBStart
bsr OpenWin ;open DOS-window
cmp.l #0,d0 ;error ?
beq CloseDos ;Yes, close DosLib
move.l d0,Handle ;No, get Handle
WBStart:
bsr vectors_table ;show system-vectors
cmp.b #$FF,StartupFlag ;was Startup-flag set ?
bne WBStart2 ;No, go to WBStart2
bsr Print ;print my message
WBStart2:
bsr CheckMem ;check memory for viruses
cmp.b #$FF,StartupFlag ;was Startup-flag set ?
bne WBStart3 ;No, go to WBStart3
bsr CloseWin ;close DOS-Window
WBStart3:
bsr CloseIntui ;close IntuiLib
bra CloseDos ;close DosLib
ScanFiles:
bsr OpenDos ;open DosLib
cmp.l #0,d0 ;error ?
beq Ende ;Yes, and good bye !
move.l d0,Dosbase ;No, get DosBase
bsr OpenIntui ;open IntuiLib
cmp.l #0,d0 ;error ?
beq CloseDos ;Yes, end it !
move.l d0,Intuibase ;No, get Intuibase
bsr OpenWin ;open DOS-window
cmp.l #0,d0 ;error ?
beq CloseDos ;Yes, close DosLib
move.l d0,Handle ;No, get Handle
bsr Print ;print my message
move.b #$FF,fastcheck ;set fastcheck-flag
bsr CheckMem ;check memory for viruses
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #260,d0 ;allocate 260 B
jsr AllocMem(a6) ;connected CHIP-RAM !
tst.l d0 ;error ?
beq notenough ;Yes, print notenough
move.l d0,FileInfoBlockMem ;No, get MemPtr
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_CHIP!MEMF_LARGEST,d1;allocate $5000 bytes
move.l #$5000,d0 ;connected CHIP-RAM !
jsr AllocMem(a6)
tst.l d0 ;error ?
beq notenough ;Yes, print notenough
move.l d0,FileMem ;No, get MemPtr
bsr GetLock ;Go to GetLock
cmp.l #0,d0 ;error ?
beq ScanFilesEnd ;Yes, end all !
move.l d0,LockHandle ;No, get Lock
bsr ExamineIt ;examine file
cmp.l #0,d0 ;error ?
beq FileTestEnd ;Yes, go to FileTestEnd
move.l FileInfoBlockMem(pc),a0 ;No, get FileInfoBlock
cmp.l #0,4(a0) ;directory ?
ble FileTest ;No, go to filetest
DirectoryTest: ;Yes !
bsr MakeCurrentDir ;branch to MakeCurrentDir
move.l d0,OldLock ;get old Lock
bra Seek2 ;branch to Seek2
Seek:
bsr CheckFile ;branch to CheckFile
Seek2:
bsr ExNextIt ;get next FIB-datas
cmp.l #0,d0 ;more datas ?
bne Seek ;Yes, go to Seek
bsr UnLockIt ;No, unlock it
bsr OldCurrentDir ;branch to OldCurrentDir
bra ScanFilesEnd ;end scanfiles
FileTest:
lea Directory(pc),a0 ;get Directory
move.l ParamLength,d0 ;get ParamLength
PathLoop:
cmp.b #":",(a0) ;look for :
beq GetDirectoryname ;Yes, get directoryname
cmp.b #"/",(a0)+ ;look for /
beq GetDirectoryname ;Yes, get directoryname
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne PathLoop ;No, continue loop !
bra FileTest2 ;Yes, go to FileTest2
GetDirectoryName:
move.b #$FF,FileFlag ;set FileFlag
lea Directory(pc),a0 ;get Directory
move.l ParamLength,d0 ;get ParamLegth
add.l d0,a0 ;add lentgh to address
DirectoryNameLoop:
cmp.b #":",(a0) ;look for :
beq MakeCurrentPath ;Yes, go to MakeCurrentPath
cmp.b #"/",(a0) ;look for /
beq MakeCurrentPath ;Yes, go to MakeCurrentPath
sub.l #1,a0 ;count down
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne DirectoryNameLoop ;No, continue loop !
bra FileTest2 ;Yes, go to FileTest2
MakeCurrentPath:
move.b #00,1(a0) ;clear last byte
bsr GetLock ;go to GetLock
cmp.l #0,d0 ;error ?
beq FileTestEnd ;Yes, end FileTest
move.l d0,FileLockHandle ;No, get Lock
bsr MakeCurrentFileDir ;branch to MakeCurrentFileDir
move.l d0,OldLock ;get old Lock
FileTest2:
bsr CheckFile ;branch to CheckFile
cmp.b #$FF,FileFlag ;was FileFlag set ?
bne FileTestEnd ;No, end FileTest
bsr UnLockFilePath ;Yes, unlock filepath
bsr OldCurrentDir ;branch to OldCurrentDir
FileTestEnd:
bsr UnLockIt ;unlock file
bra ScanFilesEnd ;end scanfiles
GetPara:
move.l Paramaddress(pc),a0 ;get Paramaddress
lea Directory(pc),a1 ;get Directory
ParaLoop:
move.b (a0)+,(a1)+ ;copy Parameter to Directory
cmp.b #10,(a0) ;Returncode ?
bne ParaLoop ;No, continue loop !
ParaLoopEnde:
move.b #0,(a1) ;Yes, remove returncode
rts ;return from subroutine
OpenDos:
move.l ExecBase,a6 ;get ExecBase
lea Dosname(pc),a1 ;get LibName
move.l #0,d0 ;any version
jsr OldOpenLibrary(a6) ;call subroutine
rts ;return from subroutine
OpenIntui:
move.l ExecBase,a6 ;get ExecBase
lea Intuiname(pc),a1 ;get LibName
move.l #0,d0 ;any version
jsr OldOpenLibrary(a6) ;call subroutine
rts ;return from subroutine
OpenWin:
move.l Dosbase(pc),a6 ;get DosBase
move.l #DOSWin,d1 ;get Window-address
move.l #1006,d2 ;new mode
jsr Open(a6) ;call subroutine
rts ;return from subroutine
Print:
move.l #Text,d2 ;get Text-Startaddress
move.l #Textende,d3 ;get Text-Endaddress
bsr PrintDOSText ;jump to subroutine
rts ;return from subroutine
notenough:
move.l #notenoughText,d2 ;get Text-Startaddress
move.l #notenoughTextende,d3 ;get Text-Endaddress
bsr PrintDOSText ;jump to subroutine
rts ;return from subroutine
NoMemAlert:
move.l Intuibase(pc),a6 ;get Intuibase
move.l #40,d1 ;get Alert-Heigth
lea string(pc),a0 ;get string-address
jsr DisplayAlert(a6) ;call subroutine
rts ;return from subroutine
CloseWin:
move.l Handle(pc),d1 ;get Handle
move.l Dosbase(pc),a6 ;get DosBase
jsr Close(a6) ;call subroutine
rts ;return from subroutine
CloseIntui:
move.l ExecBase,a6 ;get ExecBase
move.l Intuibase(pc),a1 ;get IntuiBase
jsr CloseLibrary(a6) ;call subroutine
rts ;return from subroutine
CloseDos:
move.l ExecBase,a6 ;get ExecBase
move.l Dosbase(pc),a1 ;get DosBase
jsr CloseLibrary(a6) ;call subroutine
clr.l d0 ;clear d0
Ende:
rts ;return from subroutine
GetLock:
move.l Dosbase(pc),a6 ;get DosBase
move.l #Directory,d1 ;get Directory
move.l #72,d2 ;read mode
jsr Lock(a6) ;call subroutine
rts ;return from subroutine
MakeCurrentDir:
move.l Dosbase(pc),a6 ;get DosBase
move.l LockHandle(pc),d1 ;get Lock
jsr CurrentDir(a6) ;call subroutine
rts ;return from subroutine
MakeCurrentFileDir:
move.l Dosbase(pc),a6 ;get DosBase
move.l FileLockHandle(pc),d1 ;get Lock
jsr CurrentDir(a6) ;call subroutine
rts ;return from subroutine
ExamineIt:
move.l Dosbase(pc),a6 ;get DosBase
move.l LockHandle(pc),d1 ;get Lock
move.l FileInfoBlockMem(pc),d2 ;get FileInfoBlock-structure
jsr Examine(a6) ;call subroutine
rts ;return from subroutine
ExNextIt:
move.l Dosbase(pc),a6 ;get DosBase
move.l LockHandle(pc),d1 ;get Lock
move.l FileInfoBlockMem(pc),d2 ;get FileInfoBlock-structure
jsr ExNext(a6) ;call subroutine
rts ;return from subroutine
UnLockIt:
move.l Dosbase(pc),a6 ;get DosBase
move.l LockHandle(pc),d1 ;get Lock
jsr UnLock(a6) ;call subroutine
rts ;return from subroutine
UnLockFilePath:
move.l Dosbase(pc),a6 ;get DosBase
move.l FileLockHandle(pc),d1 ;get FileInfoBlock-structure
jsr UnLock(a6) ;call subroutine
rts ;return from subroutine
OldCurrentDir:
move.l Dosbase(pc),a6 ;get DosBase
move.l OldLock(pc),d1 ;get old lock
jsr CurrentDir(a6) ;call subroutine
rts ;return from subroutine
ScanFilesEnd:
move.l ExecBase,a6 ;get ExecBase
move.l #260,d0 ;deallocate 260 Bytes
move.l FileInfoBlockMem(pc),a1 ;memory from the
jsr FreeMem(a6) ;FileInfoBlock-structure
move.l ExecBase,a6 ;get ExecBase
move.l #$5000,d0 ;deallocate $5000 Bytes
move.l FileMem(pc),a1 ;memory from the
jsr Freemem(a6) ;filebuffer
bsr CloseWin ;close DOS-window
bsr CloseIntui ;close IntuiLib
bra CloseDos ;close DosLib
even
string:
dc.b 0,200,10,` NOT ENOUGH MEMORY !`,0
dc.b 0,0,0,0
even
Dosname:
dc.b `dos.library`,0
even
Intuiname:
dc.b `intuition.library`,0
even
Dosbase:
dc.l 0
Intuibase:
dc.l 0
Handle:
dc.l 0
DateiHandle:
dc.l 0
LockHandle:
dc.l 0
FileLockHandle:
dc.l 0
OldLock:
dc.l 0
FileInfoBlockMem:
dc.l 0
FileMem:
dc.l 0
HunkPos:
dc.l 0
Paramaddress:
dc.l 0
ParamLength:
dc.l 0
even
Directory:
blk.b 500,0
Sign:
dc.b 0
fastcheck:
dc.b 0
StartupFlag:
dc.b 0
FileFlag:
dc.b 0
even
DOSWin:
dc.b `*`,0
even
Text:
dc.b ` `,10
dc.b $9b,`1;31m`
dc.b ` AntiCicloVir `
dc.b $9b,`3;31m`
dc.b `- Virus-Statikum Version 2.3a`,10
dc.b ` (C) 1992-1994 by Matthias Gutt, Kantstr.16 , 21335 Lüneburg , Germany`,10
dc.b ` `,10
dc.b $9b,`0;33m`
dc.b `KNOWN VIRUSES COUNT:`,10
dc.b `Bootblock-Viruses : 188`,10
dc.b `Linkviruses : 15`,10
dc.b `Fileviruses : 28`,10
dc.b `Disk-Validator-Viruses: 7`,10
dc.b `Trojans : 11`,10
dc.b `Bombs : 17`,10
dc.b `---------------------------`,10
dc.b `ENEMIES (TOTAL) : 266`,10
dc.b `Usage: AntiCicloVir [pathname]/[-c]/[-m]`,10
dc.b `OPTIONS TABLE:`,10
dc.b `-c = fast memorycheck`,10
dc.b `-m = memorycheck + installing background task for looking`,10
dc.b ` on every inserted disk for Bootblock- + Disk-Validator-viruses`,10
dc.b ` `,10
dc.b $9b,`0;31m`
Textende:
even
notenoughText:
dc.b ` `,10
dc.b ` Not enough memory !`,10
notenoughTextende:
CheckFile:
move.l #30,d0
lea FileNameText(pc),a0 ;get FileNameText-address
ClearFileNameTextLoop:
move.b #$20,(a0)+ ;clear all bytes with spaces
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne ClearFileNameTextLoop ;No, continue loop !
move.l FileInfoBlockMem(pc),a0 ;get FIB-structure
add.l #8,a0 ;get filename
lea FileNameText(pc),a1 ;get address of FileNamebuffer
move.l #30,d0
NameLoop:
move.b (a0)+,(a1)+ ;write filename to filenamebuffer
cmp.b #00,(a0) ;look for zero
beq NameLoopEnd ;Yes, end the loop !
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne NameLoop ;No, continue the loop !
NameLoopEnd:
move.l #FileNameText,d2 ;get FileNamebuffer-Startaddress
move.l #FileNameTextende,d3 ;get FileNamebuffer-Endaddress
bsr PrintDOSText ;jump to subroutine
move.l FileInfoBlockMem(pc),a0 ;get FIB-structure
cmp.l #0,4(a0) ;Directory ?
ble Sizehex ;No, get filesize
move.l #DirText,d2 ;get DirText-Startaddress
move.l #DirTextende,d3 ;get DirText-Endaddress
bsr PrintDOSText ;jump to subroutine
bra Protection ;branch Protection
Sizehex:
move.l FileInfoBlockMem(pc),a6 ;get FIB-structure
move.l 124(a6),d2 ;get Size-address
lea Length(pc),a0 ;get Sizebuffer-address
bsr hex ;hex it !
move.l #SizeText,d2 ;get SizeText-Startaddress
move.l #SizeTextende,d3 ;get SizeText-Endaddress
bsr PrintDOSText ;jump to subroutine
Protection:
move.l PBits(pc),ProtectText ;write Protectionbits to the buffer
lea ProtectText(pc),a0 ;get ProtectText-Startaddress
move.l FileInfoBlockMem(pc),a6 ;get FIB-structure
move.l #03,d0
ProtectionLoop:
btst d0,116(a6) ;is Protectionbit set ?
bne SetLine ;Yes, write line !
ProtectionLoop2:
cmp.b #0,(a0)+
sub.l #1,d0 ;count down
cmp.l #0,d0 ;lower than zero ?
bge ProtectionLoop ;No, continue the loop !
bra ShowPBits ;Yes, show Protectionbits
SetLine:
move.b #`-`,(a0) ;write line
bra ProtectionLoop2 ;branch back to loop !
ShowPBits:
move.l Dosbase(pc),a6 ;get DosBase
move.l Handle(pc),d1 ;get Handle
move.l #ProtectText,d2 ;get ProtectText-Startaddress
move.l #8,d3 ;get Textlength
jsr Write(a6) ;call subroutine
move.l Dosbase(pc),a6 ;get DosBase
move.l Handle(pc),d1 ;get Handle
move.l FileInfoBlockMem(pc),d2 ;get FIB-structure
add.l #144,d2 ;get CommentText-address
move.l d2,a0
TextLoop:
cmp.b #$00,(a0)+ ;zerobyte ?
bne TextLoop ;No, continue the loop !
sub.l d2,a0 ;Yes, subtract end- from startaddress
move.l a0,d3 ;get Textlength
jsr Write(a6) ;call subroutine
move.l Dosbase(pc),a6 ;get DosBase
move.l FileInfoBlockMem(pc),d1 ;get FIB-structure
add.l #8,d1 ;get filename
move.l #1005,d2 ;old mode
jsr Open(a6) ;call subroutine
cmp.l #0,d0 ;error ?
beq OK2 ;Yes, end CheckFile
move.l d0,Dateihandle ;No, get Dateihandle
move.l Dosbase(pc),a6 ;get DosBase
move.l Dateihandle(pc),d1 ;get Dateihandle
move.l FileMem(pc),d2 ;get Filebuffer
move.l #$5000,d3 ;read $5000 bytes
jsr Read(a6) ;call subroutine
move.l #53,d0 ;get counter
lea FileVirusOffsetlist(pc),a0 ;get offsetlist
lea Filevirustestbyteslist(pc),a1;get testbyteslist
lea FilevirusNameList(pc),a3 ;get FileVirusNamelist
CompareFileLoop:
move.l (a0)+,d1 ;get offset
add.l FileMem(pc),d1 ;add filebuffer-address
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;get one longword from filebuffer
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq Filevirus ;Yes, go to Filevirus
cmp.l #0,(a3)+ ;count FilevirusNamelist
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne CompareFileLoop ;No, continue the loop !
SpecialVirus:
move.l #4,d0 ;get counter
lea SpecialVirusOffsetList(pc),a0; get offsetlist
lea SpecialVirusTestbytesList(pc),a1;get testbyteslist
lea SpecialVirusNameList(pc),a3 ;get SpecialVirusNameList
lea SpecialVirusInvisibleNameList(pc),a5
CompareSpecialVirusLoop:
move.l (a0)+,d1 ;get offset
add.l FileMem(pc),d1 ;add filebufferaddress to offset
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;get one longword from filebuffer
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq KillSpecialVirus ;Yes, go to KillSpecialVirus
cmp.l #0,(a3)+ ;count SpecialVirusNameList
cmp.l #0,(a5)+ ;count SpecialVirusInvisibleNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne CompareSpecialVirusLoop ;No, continue the loop !
CheckFile2:
move.l FileMem(pc),a0 ;get filebuffer
cmp.l #$60040000,$24(a0) ;RoLe-Virus ?
beq ReturnFile ;Yes, go to ReturnFile
move.l FileInfoBlockMem(pc),d0 ;get FIB-structure
add.l #8,d0 ;get filename
move.l d0,a0
InvisibleLoop:
cmp.b #$A0,(a0)+ ;Invisible sign in filename ?
beq InvisibleFile ;Yes, go to InvisibleFile
cmp.b #$00,(a0) ;any more byte ?
bne InvisibleLoop ;Yes, continue the loop !
move.l FileMem(pc),a0 ;get filebuffer
cmp.l #$000003F3,(a0) ;executable ?
bne OK ;No, end CheckFile
LinkLoop:
cmp.l #$000003E9,(a0)+ ;Hunk-Start ?
bne LinkLoop ;No, continue the loop !
move.l a0,HunkPos ;get Hunk-Startposition
move.l #12,d0 ;get counter
lea LinkvirusOffsetList(pc),a0 ;get offsetlist
lea LinkvirusTestbytesList(pc),a1;get testbyteslist
lea LinkvirusNameList(pc),a3 ;get LinkvirusNameList
CompareLinkLoop:
move.l (a0)+,d1 ;get offset
add.l HunkPos(pc),d1 ;add Hunkposition to offset
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;get one longword from hunk
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq Linkvirus ;Yes, go to Linkvirus
cmp.l #0,(a3)+ ;count LinkvirusNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne CompareLinkLoop ;No, continue the loop !
CheckFile3:
move.l HunkPos(pc),a0 ;get fisrt Hunkposition
cmp.l #$024D4558,$6CC(a0) ;HQCruncher ?
beq HQFile ;Yes, go to HQFile
cmp.l #"powe",$60(a0) ;PowerPacker ?
beq PowerPackerFile ;Yes, go to PowerPackerFile
cmp.l #"xplo",$30(a0) ;Imploder
beq ImploderFile ;Yes, go to ImploderFile
move.l FileMem(pc),a0 ;get filebuffer
cmp.l #$000003F3,(a0) ;executable ?
beq EXECUTABLEFile ;Yes, got to ExecutableFile
OK:
move.l Dosbase(pc),a6 ;get DosBase
move.l Dateihandle(pc),d1 ;get Dateihandle
jsr Close(a6) ;call subroutine
OK2:
move.l #FileText2,d2 ;get FileText-Startaddress
move.l #FileText2ende,d3 ;get FileText-Endaddress
bsr PrintDOSText ;jump to subroutine
rts ;return from subroutine
PrintDOSText:
move.l Dosbase(pc),a6 ;get DosBase
move.l Handle(pc),d1 ;get Handle
sub.l d2,d3 ;get Textlength
jsr Write(a6) ;call subroutine
rts ;return from subroutine
FileVirusNameLoop:
move.l #40,d0 ;get counter
lea FileVirusName(pc),a0 ;get FileVirusNamebuffer
ClearFileVirusNameLoop:
move.b #$00,(a0)+ ;clear all bytes
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne ClearFileVirusNameLoop ;No, continue the Loop !
move.l #FileText,d2 ;get FileText-Startaddress
move.l #FileTextende,d3 ;get FileText-Endaddress
lea FileVirusName(pc),a0 ;get FileVirusNamebuffer
FileVirusNameLoopLoop:
move.b (a1)+,(a0)+ ;write Virusname to Filevirusbuffer
cmp.b #$00,(a1) ;zero ?
bne FileVirusNameLoopLoop ;No, continue the loop !
bsr PrintDOSText ;jump to subroutine
rts ;return from subroutine
FileVirus:
clr.l (a2) ;clear testbytes in filebuffer
move.l (a3),a1 ;get VirusText-Address
bsr FileVirusNameLoop ;go to FileVirusNameLoop
move.l FileInfoBlockMem(pc),d4 ;get FIB-structure
add.l #8,d4 ;get filename
bsr KillFileVirus ;jump to subroutine
bra OK2 ;end CheckFile
ReturnFile:
clr.l $24(a0) ;clear testbytes in filebuffer
lea ReturnoftheLamerExterminatorText(pc),a1
bsr FileVirusNameLoop ;go to FileVirusNameLoop
move.l FileInfoBlockMem(pc),d4 ;get FIB-structure
add.l #8,d4 ;get filename
bsr KillFileVirus3 ;jump to subroutine
bra OK2 ;end CheckFile
HQFile:
clr.l $6CC(a0) ;clear testbytes in filebuffer
move.l #HQCruncherText,d2 ;get HQCruncherText-StartAddress
move.l #HQCruncherTextende,d3 ;get HQCruncherText-Endaddress
bsr PrintDOSText ;jump to subroutine
bra OK ;end CheckFile
PowerPackerFile:
clr.l $60(a0) ;clear testbytes in filebuffer
move.l #PowerPackerText,d2 ;get PowerPackerText-Startaddress
move.l #PowerPackerTextende,d3 ;get PowerPackerText-Endaddress
bsr PrintDOSText ;jump to subroutine
bra OK ;end CheckFile
ImploderFile:
clr.l $30(a0) ;clear the testbytes in filebuffer
move.l #ImploderText,d2 ;get ImploderText-Startaddress
move.l #ImploderTextende,d3 ;get ImploderText-Endaddress
bsr PrintDOSText ;jump to subroutine
bra OK ;end CheckFile
EXECUTABLEFile:
move.l #ExecutableText,d2 ;get ExecutableText-Startaddress
move.l #ExecutableTextende,d3 ;get ExecutableText-Endaddress
bsr PrintDOSText ;jump to subroutine
bra OK ;end CheckFile
InvisibleFile:
move.l #InvisibleFileText,d2 ;get InvisibleText-Startaddress
move.l #InvisibleFileTextende,d3;get InvisibleText-Endaddress
bsr PrintDOSText ;jump to subroutine
move.l FileInfoBlockMem(pc),d4 ;get FIB-structure
add.l #8,d4 ;get filename
bsr KillFileVirus4 ;jump to subroutine
bra OK2 ;end CheckFile
LinkvirusNameLoop:
move.l #40,d0 ;get counter
lea LinkvirusName(pc),a0 ;get LinkvirusNamebuffer-address
ClearLinkvirusNameLoop:
move.b #$00,(a0)+ ;clear the buffer
sub.l #1,d0 ;count down
cmp.l #0,d0 ;zero ?
bne ClearLinkvirusNameLoop ;No, continue the loop !
move.l #LinkText,d2 ;get LinkText-Startaddress
move.l #LinkTextende,d3 ;get LinkText-Endaddress
lea LinkVirusName(pc),a0 ;get Linkvirusnamebuffer-address
LinkVirusNameLoopLoop:
move.b (a1)+,(a0)+ ;write Virusname to LinkvirusNamebuffer
cmp.b #$00,(a1) ;zero ?
bne LinkVirusNameLoopLoop ;No, continue the loop !
bsr PrintDOSText ;jump to subroutine
rts ;return from subroutine
Linkvirus:
clr.l (a2) ;clear testbytes from filebuffer
move.l (a3),a1 ;get VirusText-Address
bsr LinkvirusNameLoop ;jump to LinkvirusLoop
bra OK2 ;end CheckFile
CloseVirus:
move.l Dosbase(pc),a6 ;get DosBase
move.l Dateihandle(pc),d1 ;get Dateihandle
jsr Close(a6) ;call subroutine
rts ;return from subroutine
KillFileVirus:
bsr CloseVirus ;jump to subroutine
KillFileVirus2:
Requester #KillFileTexten,#Yes,#No,#310,#80
cmp.l #0,d0 ;Zero ?
beq KillFileVirusNext ;Yes, do not kill the filevirus
DeleteVirus:
move.l Dosbase(pc),a6 ;get DosBase
move.l d4,d1 ;get filename
move.l #%00000000,d2 ;unprotect
jsr SetProtection(a6) ;call subroutine
move.l Dosbase(pc),a6 ;get DosBase
move.l d4,d1 ;get filename
jsr DeleteFile(a6) ;call subroutine
KillFileVirusNext:
rts ;return from subroutine
RenameVirus:
move.l Dosbase(pc),a6 ;get DosBase
move.l d4,d2 ;get new filename
jsr Rename(a6) ;call subroutine
rts ;return from subroutine
KillSpecialVirus:
clr.l (a2) ;clear testbytes in filebuffer
lea SpecialVirusName(pc),a0 ;get SpecialVirusNamebuffer-address
move.l #40,d0 ;get counter
ClearSpecialVirusNameLoop:
move.b #00,(a0)+ ;clear the buffer
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne ClearSpecialVirusNameLoop ;No, continue the loop !
lea SpecialVirusName(pc),a0 ;get SpecialVirusNamebuffer-address
move.l (a3),a1 ;get Virusname-Address
SpecialVirusNameLoop:
move.b (a1)+,(a0)+ ;write VirusName to SpecialVirusNamebuffer
cmp.b #0,(a1) ;Zero ?
bne SpecialVirusNameLoop ;No, continue the loop !
bsr CloseVirus ;jump to subroutine
Requester #KillSpecialVirusText,#Yes,#No,#610,#70
cmp.l #0,d0 ;Zero ?
beq KillSpecialVirusNext ;Yes, do not kill the filevirus
move.l FileInfoBlockMem(pc),d4 ;get FIB-structure
add.l #8,d4 ;get filename
bsr DeleteVirus ;jump to subroutine
KillSpecialVirusNext:
Requester #SpecialVirusOrigText,#Yes,#No,#610,#70
cmp.l #0,d0 ;Zero ?
beq KillSpecialVirusNextNext ;Yes, do not rename the original
move.l (a5),d1 ;No, get original-filename-address
move.l FileInfoBlockMem(pc),d4 ;get FIB-structure
add.l #8,d4 ;get filename
bsr RenameVirus ;jump to subroutine
KillSpecialVirusNextNext:
bra OK2 ;end CheckFile
KillFileVirus3:
bsr CloseVirus ;jump to subroutine
Requester #RenameFileTexten,#Yes,#No,#400,#70
cmp.l #0,d0 ;Zero ?
beq KillFileVirus3Next ;Yes, do not rename the file
move.l Dosbase(pc),a6 ;get DosBase
move.l d4,d1 ;get old filename
move.l #RETURN,d2 ;get new filename
jsr Rename(a6) ;call subroutine
KillFileVirus3Next:
rts ;return from subroutine
KillFileVirus4:
bsr CloseVirus ;jump to subroutine
Requester #RenameInvisibleFileText,#Yes,#No,#350,#70
cmp.l #0,d0 ;Zero ?
beq KillFileVirus4Next
move.l Dosbase(pc),a6 ;get DosBase
move.l d4,d1 ;get old filename
move.l #CRITICAL,d2 ;get new filename
jsr Rename(a6) ;call subroutine
KillFileVirus4Next:
rts ;return from subroutine
even
AutoRequestText:
dc.b 0,2
dc.b 0
even
dc.w 20,20
dc.l 0
AutoRequestTextPtr:
dc.l 0
dc.l 0
even
KillFileTexten:
dc.b `Shall I delete this File ?`,0
even
KillSpecialVirusText:
dc.b `Shall I delete the filevirus `
SpecialVirusName: blk.b 40,0
even
SpecialVirusOrigText:
dc.b `Shall I rename the original file ?`,0
even
RenameFileTexten:
dc.b `Shall I rename the Disk-Validator ?`,0
even
RenameInvisibleFileText:
dc.b `Shall I rename this file ?`,0
even
GadgetText:
dc.b 0,2
dc.b 0
even
dc.w 4,4
dc.l 0
GadgetTextPtr:
dc.l 0
dc.l 0
even
GadgetText2:
dc.b 0,2
dc.b 0
even
dc.w 4,4
dc.l 0
GadgetText2Ptr:
dc.l 0
dc.l 0
even
Yes:
dc.b `Yes !`,0
even
No:
dc.b `No !`,0
even
ContinueText:
dc.b ` OK `,0
even
ContinueText2:
dc.b 0,2
dc.b 0
even
dc.w 4,4
dc.l 0
dc.l ContinueText
dc.l 0
dc.l 0
even
RETURN:
dc.b `:L/LAMER-Virus`,0
even
CRITICAL:
dc.b `:CRITICAL-Virus`,0
even
SpecialVirusNameList:
dc.l BGS9Text
dc.l BGS9IIText
dc.l TerroristsText
dc.l NaSTText
even
SpecialVirusTestbytesList:
dc.l `TTV1`
dc.l `TTV1`
dc.l `TTV1`
dc.l `NaST`
even
SpecialVirusOffsetlist:
dc.l $00000A04
dc.l $00000A04
dc.l $00000620
dc.l $0000007A
even
SpecialVirusInvisibleNameList:
dc.l BGS9Invisible
dc.l BGS9Invisible2
dc.l TerroristsInvisible
dc.l NaSTInvisible
even
BGS9Invisible:
dc.b `:DEVS/ `,0
even
BGS9Invisible2:
dc.b `:DEVS/ é `,0
even
TerroristsInvisible:
dc.b `: `,0
even
NaSTInvisible:
dc.b `:c/ `,0
even
FileNameText: dc.b ` `,0
FileNameTextende:
even
SizeText:
dc.b ` : $`
Length: dc.b `00000000 `,0
SizeTextende:
even
ExecutableText:
dc.b ` :EXECUTABLE `,0
ExecutableTextende:
even
PBits:
dc.b `rwed`,0
even
ProtectText:
dc.b ` `,0
ProtectTextende:
even
FileText2:
dc.b `: OK`,10
FileText2ende:
even
DirText:
dc.b ` <DIR> `,0
DirTextende:
even
HQCruncherText:
dc.b ` uses H&Q-Cruncher !`,0
HQCruncherTextende:
even
PowerPackerText:
dc.b ` uses powerpacker-Cruncher !`,0
PowerPackerTextende:
even
ImploderText:
dc.b ` uses implode.library !`,0
ImploderTextende:
even
InvisibleFileText:
dc.b $9b,`1;33m`
dc.b ` : ... filename contains invisible signs ! Possibility: FILEVIRUS !!!`,10
dc.b $9b,`0;31m`
InvisibleFileTextende:
even
FileText:
dc.b $9b,`1;33m`
dc.b ` : ... contains `
FileVirusname: blk.b 40,0
dc.b ` Filevirus !!!`,10
dc.b $9b,`0;31m`
FileTextende:
even
LinkText:
dc.b $9b,`1;33m`
dc.b ` : ... includes `
LinkVirusname: blk.b 40,0
dc.b ` Linkvirus !!!`,10
dc.b $9b,`0;31m`
LinkTextende:
even
LinkvirusNameList:
dc.l AntiChristText
dc.l BestialDevastationText
dc.l CCCPText
dc.l GotchaLamerText
dc.l HochofenText
dc.l IRQText
dc.l QRDLText
dc.l RedOctoberText
dc.l SmilyCancerText
dc.l TravelingJackText
dc.l TravelingJack2Text
dc.l XenoText
even
LinkvirusTestbytesList:
dc.l $00000250
dc.l `VAST`
dc.l `CCCP`
dc.l `tcha`
dc.l `hofe`
dc.l $000003EC
dc.l $60000342
dc.l `devi`
dc.l $60026068
dc.l $48E7FFFE
dc.l $48E7FFFE
dc.l `Nudo`
even
LinkvirusOffsetList:
dc.l $00000788
dc.l $00000070
dc.l $0000004C
dc.l $0000013C
dc.l $00000B90
dc.l $000000A4
dc.l $00000008
dc.l $00000484
dc.l $00000004
dc.l $00000010
dc.l $00000014
dc.l $00000414
even
FilevirusNameList:
dc.l AmigaKnightText
dc.l AntiChristTextText
dc.l BeethovenText
dc.l BlueboxText
dc.l BretHawnesText
dc.l ColorText
dc.l CommodoreText
dc.l CompuPhagozyteText
dc.l CompuPhagozyte2Text
dc.l CompuPhagozyteIIText
dc.l CompuPhagozyteIIIText
dc.l CompuPhagozyteIIIBCText
dc.l CompuPhagozyteIVText
dc.l DStructureText
dc.l DAGCreatorText
dc.l DarthVaderText
dc.l DisasterMasterText
dc.l DiskKillerText
dc.l DisktroyerV10Text
dc.l DisktroyerV20Text
dc.l DiskVal1234Text
dc.l DMTrashText
dc.l DriveInfoText
dc.l ExcrementCreatorText
dc.l FreedomText
dc.l GotchaLamerCreatorText
dc.l GZUSText
dc.l INTELText
dc.l JeffBUTONICV131Text
dc.l JeffBUTONICV300Text
dc.l LamerLoadWBText
dc.l LamerVirusXText
dc.l Liberatorv121Text
dc.l Liberatorv30Text
dc.l Liberatorv501Text
dc.l ModemCheckerText
dc.l ModemCheckerloadWBText
dc.l NANOoldText
dc.l NanonewText
dc.l NoGuruv20Text
dc.l PPBombText
dc.l RevengeOfTheLAMERExterminatorText
dc.l SADDAMText
dc.l SEPULTURAText
dc.l ShowSysopText
dc.l SmilyCancerLoadWBText
dc.l SnoopDosText
dc.l TelecomText
dc.l TFCRevengeLoadWBText
dc.l TimeBombV09Text
dc.l TravelingJackTextText
dc.l VirusConstructionSetText
dc.l xprzspeedV32Text
even
FilevirusTestbytesList:
dc.l `STAR`
dc.l `ntic`
dc.l `Beet`
dc.l `inpu`
dc.l `BRET`
dc.l `TURK`
dc.l `COMM`
dc.l ` Com`
dc.l `The `
dc.l `COMP`
dc.l `agoz`
dc.l `gozy`
dc.l `agoz`
dc.l `Stru`
dc.l $00000510
dc.l `DART`
dc.l $610002FA
dc.l `DISK`
dc.l `iskt`
dc.l `iskt`
dc.l `trac`
dc.l `user`
dc.l $4EAEFF3A
dc.l `EXCR`
dc.l `Free`
dc.l ` LAM`
dc.l `-Zus`
dc.l `oadw`
dc.l `DASA`
dc.l $4E714E71
dc.l `LAME`
dc.l `MER `
dc.l `erat`
dc.l `Libe`
dc.l `Libe`
dc.l `HECK`
dc.l `FUCK`
dc.l `N A `
dc.l `Nano`
dc.l `FNNF`
dc.l `egam`
dc.l $60040000
dc.l `BitM`
dc.l $4E716100
dc.l `SPOS`
dc.l `=WO/`
dc.l `oopD`
dc.l `brar`
dc.l `Fana`
dc.l `VIRU`
dc.l ` Jac`
dc.l `Star`
dc.l `Spee`
even
FilevirusOffsetList:
dc.l $00000342
dc.l $00000008
dc.l $00000044
dc.l $000001A0
dc.l $00000028
dc.l $00000260
dc.l $0000010E
dc.l $00000460
dc.l $00000380
dc.l $000001B0
dc.l $0000035C
dc.l $00000030
dc.l $00000030
dc.l $00000168
dc.l $00000710
dc.l $00000300
dc.l $00000028
dc.l $00000162
dc.l $00000220
dc.l $00000224
dc.l $000006C0
dc.l $000004C2
dc.l $0000002C
dc.l $000000C8
dc.l $0000054E
dc.l $000002F0
dc.l $0000361C
dc.l $0000027C
dc.l $00000206
dc.l $00000088
dc.l $00000448
dc.l $00000460
dc.l $0000129C
dc.l $00002784
dc.l $00003E80
dc.l $000033F0
dc.l $0000054C
dc.l $00000492
dc.l $0000003A
dc.l $000002F0
dc.l $00000410
dc.l $00000020
dc.l $00000702
dc.l $00000180
dc.l $000003D0
dc.l $00000C00
dc.l $000006B0
dc.l $00000290
dc.l $00000050
dc.l $000007C0
dc.l $00000010
dc.l $00000050
dc.l $000023F0
vectors_table:
bsr OpenTable ;open table-window
cmp.l #0,d0 ;error ?
beq vectorsend ;Yes, end vectors_table
move.l d0,vectorshandle ;No, get handle
bsr vectors ;show vectors
bsr vectorswait ;delay vectors
bra vectorsend ;close vectors_table
OpenTable:
move.l Dosbase(pc),a6 ;get ExecBase
move.l #Table,d1 ;get DOS-Window-Address
move.l #1006,d2 ;mode new
jsr Open(a6) ;call subroutine
rts ;return from subroutine
vectors:
move.l #17,d0 ;get counter
lea ExecVectorsList(pc),a3 ;get vectorslist
lea ExecVectorsNameList(pc),a4 ;get ExecVectorsNameList
ExecVectorsLoop:
move.l (a3)+,d4 ;get offset
move.l 4,a6 ;get ExecBase
add.l d4,a6 ;add offset to ExecBase
move.l (a6),d2 ;write ROM-address to d2
move.l (a4)+,a0 ;get vectorbuffer
bsr hex ;hex !!!
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne ExecVectorsLoop ;No, continue the loop !
bsr FindTrackDisk ;get TrackDiskBase
move.l a1,a6 ;write TrackDiskBase to a6
move.l #2,d0 ;get counter
lea TrackDiskVectorsList(pc),a3 ;get offsetlist
lea TrackDiskVectorsNameList(pc),a4;get TrackDiskVectorsNameList
TrackDiskVectorsLoop:
move.l a6,a1 ;get TrackDiskBase
add.l (a3)+,a1 ;add offset to TrackDiskBase
move.l (a1),d2 ;write ROM-address to d2
move.l (a4)+,a0 ;get vectorbuffer
bsr hex ;hex !!!
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne TrackDiskVectorsLoop ;No, continue the loop !
bsr Findkeyboard ;get KeyBoardBase
move.l -$0000001C(a1),d2 ;get offset
lea BeginIOVec(pc),a0 ;get vectorbuffer
bsr hex ;hex !!!
move.l #4,d0 ;get counter
lea DOSVectorsList(pc),a3 ;get offsetlist
lea DOSVectorsNameList(pc),a4 ;get DOSVectorsNameList
DOSVectorsLoop:
move.l DosBase(pc),a6 ;get DosBase
add.l (a3)+,a6 ;add offset to DosBase
move.l (a6),d2 ;write ROM-address to d2
move.l (a4)+,a0 ;get vectorsbuffer
bsr hex ;hex !!!
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne DOSVectorsLoop ;No, continue the loop !
move.l #2,d0 ;get counter
lea IntuitionVectorsList(pc),a3 ;get offsetlist
lea IntuitionVectorsNameList(pc),a4;get IntuitionVectorsNameList
IntuitionLoop:
move.l Intuibase(pc),a6 ;get IntuiBase
add.l (a3)+,a6 ;add offset to Intuibase
move.l (a6),d2 ;write ROM-address to d2
move.l (a4)+,a0 ;get vectorsbuffer
bsr hex ;hex !!!
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne IntuitionLoop ;No, continue the loop !
move.l #Systemvectorstabletext,d2;get Systemvectorstabletext-Startaddress
move.l #Systemvectorstableend,d3;get Systemvectorstable-Endaddress
bsr PrintDOSText2 ;jump to subroutine
rts ;return from subroutine
hex:
;this routine converts the ROM-addresses to hexadecimal
;numbers
move.l #8,d1 ;get counter
HexaLoop:
rol.l #4,d2 ;rotate 4 bits left
move.l d2,d3 ;get byte
and.b #$0f,d3 ;get nibble
add.b #$30,d3 ;get ciphers
cmp.b #$39,d3 ;d3 > 9 ?
ble display ;No, diplay hexa-cipher
add.b #7,d3 ;Yes, get letter A-F
Display:
move.b d3,(a0)+ ;display one byte
sub.l #1,d1 ;count down
cmp.l #0,d1 ;Zero ?
bne HexaLoop ;No, continue the loop !
rts ;return from subroutine
vectorswait:
move.l Dosbase(pc),a6 ;get DosBase
move.l #300,d1 ;worth for Delay
jsr Delay(a6) ;call subroutine
CloseTable:
move.l Dosbase(pc),a6 ;get DosBase
move.l vectorshandle(pc),d1 ;get handle
jsr Close(a6) ;call subroutine
rts ;return from subroutine
PrintDOSText2:
move.l Dosbase(pc),a6 ;get DosBase
move.l vectorshandle(pc),d1 ;get handle
sub.l d2,d3 ;calculate textlength
jsr Write(a6) ;call subroutine
rts ;return from subroutine
vectorsend:
rts ;return from subroutine
even
Table:
dc.b `CON:0/0/600/200/System-Vectors-Table:`,0
even
Vectorshandle:
dc.l 0
even
ExecVectorsNameList:
dc.l ColdCapture
dc.l CoolCapture
dc.l WarmCapture
dc.l CHKSumVec
dc.l KickCheckSum
dc.l DoIO
dc.l KickMemPtr
dc.l KickTagPtr
dc.l RasterBeamVec
dc.l OldOpenLibraryVec
dc.l OpenLib
dc.l SKD
dc.l AlertVec
dc.l AllocMemVec
dc.l FreeMemVec
dc.l PutMsgVec
dc.l OpenDeviceVec
even
ExecVectorsList:
dc.l 42
dc.l 46
dc.l 50
dc.l 82
dc.l 554
dc.l -454
dc.l 546
dc.l 550
dc.l $90
dc.l -406
dc.l -550
dc.l -610
dc.l -106
dc.l -196
dc.l -208
dc.l -364
dc.l -442
even
TrackDiskVectorsNameList:
dc.l BeginIO
dc.l CloseVec
even
TrackDiskVectorsList:
dc.l -$0000001C
dc.l -$0000000A
even
DOSVectorsNameList:
dc.l OP
dc.l LoadSeg
dc.l WriteVec
dc.l LockVec
even
DOSVectorsList:
dc.l -28
dc.l -148
dc.l -46
dc.l -82
even
IntuitionVectorsNameList:
dc.l WindowOpen
dc.l DisplayAlertVec
even
IntuitionVectorsList:
dc.l -202
dc.l -88
even
Systemvectorstabletext:
dc.b ` ExecBase:`,10
dc.b ` ColdCapture: $`
ColdCapture: dc.b `00000000`,0
dc.b ` CoolCapture: $`
CoolCapture: dc.b `00000000`,10
dc.b ` WarmCapture: $`
WarmCapture: dc.b `00000000`,0
dc.b ` ChkSum: $`
CHKSumVec: dc.b `00000000`,10
dc.b ` KickMemPtr: $`
KickMemPtr: dc.b `00000000`,0
dc.b ` KickTagPtr: $`
KickTagPtr: dc.b `00000000`,10
dc.b ` KickCheckSum: $`
KickCheckSum: dc.b `00000000`,0
dc.b ` RasterBeam Int.$`
RasterBeamVec: dc.b `00000000`,10
dc.b ` exec.library:`,10
dc.b ` Alert: $`
AlertVec: dc.b `00000000`,0
dc.b ` AllocMem: $`
AllocMemVec: dc.b `00000000`,10
dc.b ` FreeMem: $`
FreeMemVec: dc.b `00000000`,0
dc.b ` PutMsg: $`
PutMsgVec: dc.b `00000000`,10
dc.b ` OldOpenLibrary: $`
OldOpenLibraryVec: dc.b `00000000`,0
dc.b ` OpenDevice: $`
OpenDeviceVec: dc.b `00000000`,10
dc.b ` DoIO: $`
DoIO: dc.b `00000000`,0
dc.b ` OpenLibrary: $`
OpenLib: dc.b `00000000`,10
dc.b ` SumKickData: $`
SKD: dc.b `00000000`,10
dc.b ` dos.library:`,10
dc.b ` Open: $`
OP: dc.b `00000000`,0
dc.b ` Write: $`
WriteVec: dc.b `00000000`,10
dc.b ` Lock: $`
LockVec: dc.b `00000000`,0
dc.b ` LoadSeg: $`
LoadSeg: dc.b `00000000`,10
dc.b ` intuition.library:`,10
dc.b ` DisplayAlert: $`
DisplayAlertVec: dc.b `00000000`,0
dc.b ` OpenWindow: $`
WindowOpen: dc.b `00000000`,10
dc.b ` trackdisk.device:`,10
dc.b ` BeginIO: $`
BeginIO: dc.b `00000000`,0
dc.b ` Close: $`
CloseVec: dc.b `00000000`,10
dc.b ` keyboard.device:`,10
dc.b ` BeginIO: $`
BeginIOVec: dc.b `00000000`,10
Systemvectorstableend:
even
CheckMem:
move.l #129,d0
lea AbsoluteMemoryPositionVirusOffsetList(pc),a0
lea AbsoluteMemoryPositionVirusTestbytesList(pc),a1
lea AbsoluteMemoryPositionVirusNameList(pc),a3
CompareAbsMemLoop:
move.l (a0)+,a2 ;get offset
move.l (a2),d1 ;get longword from offset-position
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq AMIGAMemoryVirus ;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+ ;count AbsoluteMemoryPositionVirusNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne CompareAbsMemLoop ;No, continue the loop !
ColdRelativeMemoryPosition:
move.l #8,d0
lea ColdRelativeMemoryPositionVirusOffsetList(pc),a0
lea ColdRelativeMemoryPositionVirusTestbytesList(pc),a1
lea ColdRelativeMemoryPositionVirusNameList(pc),a3
CompareColdRelativeMemoryPositionLoop:
move.l (a0)+,d1 ;get offset
move.l ExecBase,a6 ;get ExecBase
move.l 42(a6),d2 ;get ColdCapture-Startaddress
add.l d2,d1 ;add offset to this Startaddress
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;write longword from memory to d1
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq AMIGAMemoryVirus ;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+ ;count ColdRelativeMemoryPositionVirusNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne CompareColdRelativeMemoryPositionLoop;No, continue the loop !
CoolRelativeMemoryPosition:
move.l #23,d0
lea CoolRelativeMemoryPositionVirusOffsetList(pc),a0
lea CoolRelativeMemoryPositionVirusTestbytesList(pc),a1
lea CoolRelativeMemoryPositionVirusNameList(pc),a3
CompareCoolRelativeMemoryPositionLoop:
move.l (a0)+,d1 ;get offset
move.l ExecBase,a6 ;get ExecBase
move.l 46(a6),d2 ;get CoolCapture-Startaddress
add.l d2,d1 ;add offset to this Startaddress
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;write longword from memory to d1
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq AMIGAMemoryVirus ;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+ ;count CoolRelativeMemoryPositionVirusNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne CompareCoolRelativeMemoryPositionLoop;No, continue the loop !
KickTagRelativeMemoryPosition:
move.l #56,d0
lea KickTagRelativeMemoryPositionVirusOffsetList(pc),a0
lea KickTagRelativeMemoryPositionVirusTestbytesList(pc),a1
lea KickTagRelativeMemoryPositionVirusNameList(pc),a3
CompareKickTagRelativeMemoryPositionLoop:
move.l (a0)+,d1 ;get offset
move.l ExecBase,a6 ;get ExecBase
move.l 550(a6),d2 ;get KickTagPtr-Startaddress
add.l d2,d1 ;add offset to this Startaddress
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;write longword from memory to d1
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq AMIGAMemoryVirus ;Yes, go to AMIGAMemoryVirus
cmp.l #0,(a3)+ ;count KickTagRelativeMemoryPositionVirusNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne CompareKickTagRelativeMemoryPositionLoop;No, continue the loop !
CheckMemNext:
lea HochofenName(pc),a1 ;get HochofenName-Address
bsr Task ;jump to subroutine
cmp.l #0,d0 ;Zero ?
bne Hochofen ;No, its the Hochofen-virus
lea ModemCheckerName(pc),a1 ;get ModemCheckerName-Address
bsr Task ;jump to subroutine
cmp.l #0,d0 ;Zero ?
bne ModemChecker ;No, its the ModemChecker-virus
bra KillMem ;jump to KillMem
Task:
move.l ExecBase,a6 ;get ExecBase
jsr FindTask(a6) ;call subroutine
rts ;return from subroutine
KillMem:
move.l ExecBase,a6 ;get ExecBase
cmp.l #0,42(a6) ;is ColdCapture at zero ?
bne AskColdCapture ;No, jump to AskColdCapture
cmp.l #0,46(a6) ;is CoolCapture at zero ?
bne AskCoolCapture ;No, jump to AskCoolCapture
cmp.l #0,550(a6) ;is KickTagPtr at zero ?
bne AskKickTagPtr ;No, jump to KickTagPtr
KillMem2:
bra NoAMIGAMemoryVirus ;jump to NoAMIGAMemoryVirus
AskColdCapture:
Requester #AColdText,#Yes,#No,#360,#70
cmp.l #1,d0 ;was Yes-Gadget touched ?
beq KillColdCapture ;Yes, KillColdCapture
bra NoAMIGAMemoryVirus ;No, jump to NoAMIGAMemoryVirus
AskCoolCapture:
Requester #ACoolText,#Yes,#No,#360,#70
cmp.l #1,d0 ;was Yes-Gadaget touched ?
beq KillCoolCapture ;Yes, KillCoolCapture
bra NoAMIGAMemoryVirus ;No, jump to NoAMIGAMemoryVirus
AskKickTagPtr:
Requester #AKickText,#Yes,#No,#360,#70
cmp.l #1,d0 ;was Yes-Gadget touched
beq KillKickTagPtr ;Yes, KillKickTagPtr
bra NoAMIGAMemoryVirus ;No, jump to NoAMIGAMemoryVirus
KillColdCapture:
move.l 4,a6 ;get ExecBase
clr.l 42(a6) ;clear ColdCapture
bsr ChkSum ;calculate new ChkSum
rts ;return from subroutine
KillCoolCapture:
move.l 4,a6 ;get ExecBase
clr.l 46(a6) ;clear CoolCapture
bsr ChkSum ;calculate new ChkSum
rts ;return from subroutine
ChkSum:
clr.w 82(a6) ;clear old ChkSum
lea 34(a6),a0 ;get Versionnumber
clr.l d0 ;clear d0
moveq #23,d0 ;get counter
clr.w d1 ;clear d1
ChkSumLoop:
add.w (a0)+,d1 ;add the lower words
;of the ExecBase-structure
dbf d0,ChkSumLoop ;until d0 is count down
not.w d1 ;invert this sum
move.w d1,82(a6) ;get new ChkSum
clr.l d0 ;clear d0
rts ;return from subroutine
KillKickMemPtr:
move.l 4,a6 ;get ExecBase
move.l 546(a6),a0 ;get KickMemPtr
move.l (a0),d0 ;get successor
move.l d0,546(a6) ;enter address of successor
;to KickMemPtr
bsr KillKickCheckSum ;calculate new KickCheckSum
rts ;return from subroutine
KillKickTagPtr:
move.l 4,a6 ;get ExecBase
move.l 550(a6),a0 ;get KickTagPtr
move.l 4(a0),d0 ;get successor
move.l d0,550(a6) ;enter address of successor
;to KickTagPtr
bsr KillKickCheckSum ;calculate new KickCheckSum
rts ;return from subroutine
KillKickCheckSum:
move.l 4,a6 ;get ExecBase
jsr -612(a6) ;call subroutine
move.l d0,554(a6) ;enter new KickCheckSum
;to KickCheckSum
rts ;return from subroutine
FindTrackDisk:
move.l ExecBase,a6 ;get ExecBase
lea $0000015E(a6),a0 ;ListPtr
lea TrackName(pc),a1 ;Name
jsr FindName(a6) ;call subroutine
move.l d0,a1 ;get address of TrackDisk
rts ;return from subroutine
Findkeyboard:
move.l ExecBase,a6 ;get ExecBase
lea $0000015E(a6),a0 ;ListPtr
lea KeyName(pc),a1 ;Name
jsr FindName(a6) ;call subroutine
move.l d0,a1 ;get address of Keyboard
rts ;return from subroutine
returntoSystem:
rts ;return from subroutine
even
AColdText:
dc.b `Shall I restore ColdCapture ?`,0
even
ACoolText:
dc.b `Shall I restore CoolCapture ?`,0
even
AKickText:
dc.b `Shall I restore KickTagPtr ?`,0
even
TrackName:
dc.b `trackdisk.device`,0
even
KeyName:
dc.b `keyboard.device`,0
even
Hochofenname:
dc.b `Greetings to Hochofen`,0
even
ModemCheckerName:
dc.b `Diskdriver.proc`,0
even
AbsoluteMemoryPositionVirusNameList:
dc.l The16BitCrewText
dc.l The2001Text
dc.l AEKText
dc.l AIDSText
dc.l AlienNewBeatText
dc.l AmigaMasterText
dc.l ASSText
dc.l ASVText
dc.l AsylantText
dc.l BamigaSectorOneText
dc.l BBProtText
dc.l BeethovenText
dc.l BigBossText
dc.l BlackflashText
dc.l BladeRunnersText
dc.l BLFText
dc.l BlowJobText
dc.l BretHawnesText
dc.l ButonicText
dc.l ByteVoyagerText
dc.l ByteVoyagerIIText
dc.l CascadeText
dc.l ClonkText
dc.l CodersNightmareText
dc.l ColorText
dc.l CompuPhagozyteText
dc.l CompuPhagozyte2Text
dc.l CompuPhagozyteIIText
dc.l CompuPhagozyteIIIText
dc.l CompuPhagozyteIIIBCText
dc.l CompuPhagozyteIVText
dc.l DStructureText
dc.l DAGText
dc.l DAT89Text
dc.l DATACRIMEText
dc.l DigitalEmotionsText
dc.l DisgustText
dc.l DiskguardText
dc.l DiskHerpesText
dc.l DiskTerminatorText
dc.l DottyText
dc.l DUMDUMText
dc.l ExcrementText
dc.l ExecutorsText
dc.l FASTText
dc.l FastEddieText
dc.l GadaffiText
dc.l GlasnostText
dc.l GoldenRiderText
dc.l GraffitiText
dc.l GremlinText
dc.l GXTeamText
dc.l GyrosText
dc.l HCSText
dc.l HCSIIText
dc.l HillyText
dc.l HODENText
dc.l IceText
dc.l IndianaJonesText
dc.l InfectorText
dc.l InfluenzaText
dc.l INGOText
dc.l JITRText
dc.l JulieText
dc.l KaukiText
dc.l KefrensText
dc.l KilledText
dc.l LADSText
dc.l LoverboySexmachineText
dc.l LSDText
dc.l MADIIText
dc.l MEXXText
dc.l MGM89Text
dc.l MOSHText
dc.l MOSH2Text
dc.l MutilatorText
dc.l NANOoldText
dc.l NANOnewText
dc.l NastyNastyText
dc.l NorthStarText
dc.l NorthStarIIText
dc.l OverkillText
dc.l PARATAXIText
dc.l PARATAXIIIText
dc.l PayDayText
dc.l PentagonSlayerText
dc.l PentagonSlayer2Text
dc.l PentagonSlayer3Text
dc.l PlastiqueText
dc.l REPText
dc.l REVENGEText
dc.l SachsenText
dc.l SADDAMHUSSEINText
dc.l SaoPauloText
dc.l SATANText
dc.l SCAText
dc.l SendarionText
dc.l SherlockText
dc.l SmilyCancerText
dc.l SSText
dc.l SSIIText
dc.l SuicideMachineText
dc.l SuperboyText
dc.l SupplyTeamText
dc.l SystemZV30Text
dc.l SystemZV40Text
dc.l SystemZV50Text
dc.l SystemZV51Text
dc.l SystemZV53Text
dc.l SystemZV54Text
dc.l SystemZV61Text
dc.l TargetText
dc.l TelStarText
dc.l TermigatorText
dc.l TIMEBOMBText
dc.l TNKText
dc.l TomatesGentechnic10Text
dc.l TomatesGentechnic20text
dc.l TURKText
dc.l UltrafoxText
dc.l USSR492Text
dc.l VirusConstructionSetBootblockText
dc.l VirusSlayerText
dc.l VirusV1Text
dc.l WahnfriedText
dc.l WARHAWKText
dc.l ZaccessV10Text
dc.l ZLXText
dc.l ZombiText
even
AbsoluteMemoryPositionVirusTestbytesList:
dc.l $43726577
dc.l $30303132
dc.l ` AEK`
dc.l $48495621
dc.l `ALIE`
dc.l `Mast`
dc.l `ROTE`
dc.l `SV!A`
dc.l `ASYL`
dc.l `BS1!`
dc.l `B-Pr`
dc.l `BETH`
dc.l `A!BI`
dc.l `blac`
dc.l `lade`
dc.l `trac`
dc.l `cato`
dc.l `BRET`
dc.l `BAHA`
dc.l `VOYA`
dc.l `oyag`
dc.l `Casc`
dc.l `LONK`
dc.l `oder`
dc.l `TURK`
dc.l `gozy`
dc.l `The `
dc.l `COMP`
dc.l `agoz`
dc.l `gozy`
dc.l `agoz`
dc.l `Stru`
dc.l `from`
dc.l `T '8`
dc.l `DATA`
dc.l `EMOT`
dc.l `Viru`
dc.l `DISK`
dc.l ` H e`
dc.l `isk-`
dc.l `Dott`
dc.l `MDUM`
dc.l `EXCR`
dc.l `XECU`
dc.l `ains`
dc.l `EDDI`
dc.l $47414441
dc.l `Glas`
dc.l `Gold`
dc.l `fiti`
dc.l `grap`
dc.l `libr`
dc.l `GYRO`
dc.l $482E432E
dc.l `H.C.`
dc.l `dos.`
dc.l `HODE`
dc.l `INC!`
dc.l `ndia`
dc.l `INFE`
dc.l `I N `
dc.l `INGO`
dc.l `JITR`
dc.l `dos.`
dc.l `dos.`
dc.l `efre`
dc.l `Kill`
dc.l `LADS`
dc.l `Love`
dc.l $4C534421
dc.l $004D4144
dc.l `MEXX`
dc.l `MGM8`
dc.l `MOSH`
dc.l `MOSH`
dc.l `grap`
dc.l `N A `
dc.l `Nano`
dc.l `Nast`
dc.l $4E4F5254
dc.l $57726974
dc.l `Over`
dc.l `PARA`
dc.l `PARA`
dc.l `PayD`
dc.l $656E7461
dc.l `enta`
dc.l `enta`
dc.l ` L A`
dc.l `REP!`
dc.l $52657665
dc.l `ACHS`
dc.l `2000`
dc.l `PAUL`
dc.l `ATAN`
dc.l $53434121
dc.l `Send`
dc.l `ORSI`
dc.l $52494F4E
dc.l `!SS!`
dc.l `HEIL`
dc.l `uici`
dc.l `Supe`
dc.l `uppl`
dc.l ` V3.`
dc.l ` V4.`
dc.l ` V5.`
dc.l `5.1 `
dc.l `V5.3`
dc.l `V5.4`
dc.l `V6.1`
dc.l $43524E00
dc.l `grap`
dc.l `NsAx`
dc.l $424F4D42
dc.l `TNK!`
dc.l `OMAT`
dc.l `Toma`
dc.l `TURK`
dc.l `NuNu`
dc.l `Sent`
dc.l $00BFE001
dc.l `VIRU`
dc.l `sind`
dc.l `AHNF`
dc.l `WARH`
dc.l `ZACC`
dc.l `ZLX!`
dc.l `bi I`
even
AbsoluteMemorypositionVirusOffsetList:
dc.l $0007EDE0
dc.l $0007EFE8
dc.l $0007EFD0
dc.l $0007EFF0
dc.l $00020240
dc.l $0007EF30
dc.l $0007F4B2
dc.l $0007DF00
dc.l $0007EF30
dc.l $0007EFE8
dc.l $0007A338
dc.l $0007F008
dc.l $0007EFE2
dc.l $0007F010
dc.l $0007EF30
dc.l $0007F31A
dc.l $0007F02E
dc.l $0007F004
dc.l $0007EF2C
dc.l $0007F330
dc.l $0007F2E2
dc.l $0007E3E2
dc.l $0007D398
dc.l $0007FA5C
dc.l $00070260
dc.l $0007C400
dc.l $0007C380
dc.l $0007C1B0
dc.l $0007C35C
dc.l $0007C030
dc.l $0007C030
dc.l $0007C168
dc.l $0007EFB6
dc.l $0007FAC0
dc.l $0007DDC6
dc.l $0007EE80
dc.l $0007EDB8
dc.l $0007FCF4
dc.l $0007EF90
dc.l $0007EF24
dc.l $0007F018
dc.l $0007FA10
dc.l $0007F454
dc.l $0007EF48
dc.l $0007F240
dc.l $0007F3D4
dc.l $0007FB40
dc.l $0007F730
dc.l $0007C34C
dc.l $0007EF90
dc.l $0007F760
dc.l $0007F8C0
dc.l $0007EE3E
dc.l $0007EF44
dc.l $0007EF4E
dc.l $0007F440
dc.l $0007F2D4
dc.l $0007EFE4
dc.l $0007E91E
dc.l $0007F310
dc.l $0007F3D2
dc.l $0007F408
dc.l $0007EC18
dc.l $0007F826
dc.l $0007EE98
dc.l $0007EFAC
dc.l $0007EE64
dc.l $0007F408
dc.l $0007EDD6
dc.l $0007EFE4
dc.l $0007FB72
dc.l $0007EFE4
dc.l $0007E582
dc.l $0007C016
dc.l $0007C016
dc.l $0007CD4C
dc.l $0007C492
dc.l $0007C03A
dc.l $0007F1D6
dc.l $0007EF84
dc.l $0007EF9A
dc.l $0007F722
dc.l $0007EFCC
dc.l $0007EE82
dc.l $0007EC10
dc.l $0007FD86
dc.l $0007F368
dc.l $0007E2DA
dc.l $0007EE12
dc.l $0007EFE4
dc.l $0007E3E2
dc.l $000782D8
dc.l $0007F012
dc.l $0007FEF0
dc.l $0007CF26
dc.l $0007EFE8
dc.l $0007E3E2
dc.l $0007FCF6
dc.l $0007FB00
dc.l $0007C012
dc.l $0007C01A
dc.l $0007E424
dc.l $0007EEE2
dc.l $0007F2C8
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007F42C
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007F42A
dc.l $0007ED9C
dc.l $0007FED4
dc.l $0007F712
dc.l $00070346
dc.l $0007EFE4
dc.l $00070182
dc.l $0007F640
dc.l $0007F066
dc.l $0007EDB0
dc.l $0007F454
dc.l $0007F146
dc.l $0007FA10
dc.l $0007EF22
dc.l $0007F312
dc.l $0007E966
dc.l $0007EDD6
dc.l $0007EFE4
dc.l $0007A18C
even
ColdRelativeMemoryPositionVirusNameList:
dc.l DestructorText
dc.l DiskVal1234Text
dc.l HARDEXText
dc.l Joshua2Text
dc.l LAMEText
dc.l LOOMText
dc.l RISCText
dc.l SADDAMText
even
ColdRelativeMemoryPositionVirusTestbytesList:
dc.l `estr`
dc.l $0C681234
dc.l `RDEX`
dc.l `trac`
dc.l `LAME`
dc.l `LOOO`
dc.l `ISC `
dc.l `libr`
even
ColdRelativeMemoryPositionVirusOffsetList:
dc.l $00000180
dc.l $00000148
dc.l $0000057E
dc.l $00000242
dc.l $0000014A
dc.l $0000057C
dc.l $0000057E
dc.l $00000560
even
CoolRelativeMemoryPositionVirusNameList:
dc.l AIDS2Text
dc.l AngelText
dc.l AustralianParasiteText
dc.l BadBytesText
dc.l BlizzProV31Text
dc.l BlizzProV33Text
dc.l CCCPText
dc.l CrackerExterminatorText
dc.l Crime2Text
dc.l CrimePlusText
dc.l DarthVaderText
dc.l DiskDoktorsText
dc.l DISKFurunkelText
dc.l DivinaExterminatorText
dc.l ExcrementText
dc.l LameBlameText
dc.l MICROSYSTEMSText
dc.l MOSH2Text
dc.l ObeliskText
dc.l PARATAXIIText
dc.l QRDLText
dc.l USSR492Text
dc.l WAFTText
even
CoolRelativeMemoryPositionVirusTestbytesList:
dc.l `A'e*`
dc.l `Ange`
dc.l `Aust`
dc.b `TTS `
dc.l `Bliz`
dc.l `Bliz`
dc.l `CCCP`
dc.l `CRAC`
dc.l `Crim`
dc.l `rime`
dc.l `DART`
dc.l `Dokt`
dc.l `DISK`
dc.l `IVIN`
dc.l `EXCR`
dc.l `ameB`
dc.l `MICR`
dc.l `MOSH`
dc.l `GURU`
dc.l `ARAT`
dc.l `QRDL`
dc.l `Sent`
dc.l `est-`
even
CoolRelativeMemoryPositionVirusOffsetList:
dc.l $0000033E
dc.l $00000262
dc.l $000002DE
dc.l $00000310
dc.l -$00000222
dc.l -$00000238
dc.l -$00000030
dc.l -$00000096
dc.l $00000346
dc.l $000002B8
dc.l $00000268
dc.l $0000017C
dc.l $0000035C
dc.l $000002EA
dc.l -$00000026
dc.l $00000050
dc.l $0000032C
dc.l -$00000072
dc.l -$00000034
dc.l $0000013C
dc.l $00000190
dc.l -$00000026
dc.l $000002DE
even
KickTagRelativeMemoryPositionVirusNameList:
dc.l AmigaFreakText
dc.l AmigaKnightText
dc.l BGS9Text
dc.l BootXText
dc.l ByteBanditText
dc.l ByteBanditPlusText
dc.l ByteBandit2Text
dc.l ByteBanditturboText
dc.l ByteWarriorText
dc.l CobraText
dc.l DetlefText
dc.l DisasterMasterText
dc.l ElectroVisionText
dc.l EuropeanText
dc.l ExtremeText
dc.l FICAText
dc.l ForpibText
dc.l FrityText
dc.l GermanyText
dc.l GuardiansBootAidsText
dc.l HaukeText
dc.l IncognitoText
dc.l IngerIQText
dc.l IngosReturnText
dc.l IRQText
dc.l JeffBUTONICV131Text
dc.l JeffBUTONICV300Text
dc.l JoshuaText
dc.l LamerExterminatoroldIIIText
dc.l LamerExterminatornewText
dc.l LamerExterminatorIText
dc.l LamerExterminatorIIText
dc.l LamerExterminatorIVVText
dc.l LamerExterminatorVIText
dc.l LamerExterminatorVIIText
dc.l LamerExterminatorVIIIText
dc.l NaSTText
dc.l Obelisk2Text
dc.l OPAPAText
dc.l ReturnoftheLamerExterminatorText
dc.l RevengeBootloaderText
dc.l RevengeOfTheLAMERExterminatorText
dc.l RevengeOfTheLAMERExterminatorText
dc.l SCARFACEText
dc.l SEPULTURAText
dc.l ShitText
dc.l SonjaText
dc.l SystemZV64Text
dc.l SystemZV65Text
dc.l TerroristsText
dc.l TFCRevengeText
dc.l UKLamerStyleText
dc.l VIPHSText
dc.l WarsawAvengerText
dc.l ZaccessV20Text
dc.l ZaccessV30Text
even
KickTagRelativeMemoryPositionVirusTestbytesList:
dc.l `AMIG`
dc.l `STAR`
dc.l `TTV1`
dc.l `Boot`
dc.l $42616E64
dc.l `NqNq`
dc.l `dos.`
dc.l `trac`
dc.l `Viru`
dc.l `OBRA`
dc.l `intu`
dc.l `-seq`
dc.l `ELEC`
dc.l `Euro`
dc.l `XTRE`
dc.l `F.I.`
dc.l `FORP`
dc.l `rity`
dc.l `Germ`
dc.l `-aid`
dc.l `Hauk`
dc.l `dos.`
dc.l `nger`
dc.l `INGO`
dc.l `RQ-T`
dc.l `JEFF`
dc.l `DASA`
dc.l `trac`
dc.l `LAME`
dc.l `LAME`
dc.l `AMER`
dc.l `LAME`
dc.l `AMER`
dc.l `AMER`
dc.l `LAME`
dc.l `LAME`
dc.l `NaST`
dc.l `BELI`
dc.l `PARA`
dc.l `amer`
dc.l `Reve`
dc.l $38204F63
dc.l `1986`
dc.l `SCAR`
dc.l `brar`
dc.l `SHIT`
dc.l `onja`
dc.l `V6.4`
dc.l `V6.5`
dc.l `TTV1`
dc.l `anat`
dc.l `devi`
dc.l `VIPH`
dc.l `rsaw`
dc.l `ZACC`
dc.l `ACCE`
even
KickTagRelativeMemoryPositionVirusOffsetList:
dc.l -$000003C4
dc.l $00000242
dc.l $00000A26
dc.l -$00000184
dc.l -$000003C2
dc.l -$0000013C
dc.l -$000003BC
dc.l -$0000002A
dc.l $000002B4
dc.l -$00000052
dc.l $00000218
dc.l $00000562
dc.l -$000003D2
dc.l -$000003D2
dc.l -$000001A2
dc.l $000004CA
dc.l -$000003C8
dc.l -$000003CA
dc.l -$000003D2
dc.l -$00000024
dc.l -$000003D2
dc.l -$000003BE
dc.l -$000003CE
dc.l -$0000002A
dc.l -$00000348
dc.l $0000099C
dc.l $000001A6
dc.l $000000EA
dc.l -$0000002E
dc.l -$00000028
dc.l -$00000022
dc.l -$0000002A
dc.l -$00000026
dc.l -$00000028
dc.l -$00000090
dc.l -$00000064
dc.l $0000009C
dc.l -$0000009C
dc.l -$00000098
dc.l -$000000DC
dc.l -$000003B8
dc.l -$00000834
dc.l -$0000082A
dc.l -$0000003E
dc.l $00000698
dc.l -$0000017C
dc.l -$0000001E
dc.l -$000003DA
dc.l -$000003DA
dc.l $0000007A
dc.l -$00000126
dc.l -$000000E0
dc.l -$00000398
dc.l -$00000370
dc.l -$000003CC
dc.l -$0000019C
NoAMIGAMemoryVirus:
cmp.b #$FF,fastcheck ;was fastcheck-flag set ?
beq returntoSystem ;No, returntoSystem
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_LARGEST,d1 ;want connected memory
move.l #$5000,d0 ;want $5000 bytes
jsr AllocMem(a6) ;call subroutine
move.l d0,DiskValMem ;get MemPtr
tst.l d0 ;error ?
beq NoMemAlert ;Yes, jump to NoMemAlert
clr.b TrackdiskFlag ;clear TrackDiskFlag
clr.l AddressCounter ;clear AddressCounter
clr.l DriveCounter ;clear DriveCounter
clr.l DriveLoopCounter ;clear DriveLoopCounter
clr.l OpenDriveCount ;clear OpenDriveCount
OpenDrivesLoop:
bsr BootblockStart ;open TrackDiskDevice
cmp.b #$FF,TrackdiskFlag ;No more drives ?
beq OpenDrivesLoopEnd ;Yes end the loop
add.l #4,AddressCounter ;count up AddressCounter
add.l #1,DriveCounter ;count up DriveCounter
add.l #1,OpenDriveCount ;count up OpenDriveCount
cmp.l #4,OpenDriveCount ;all floopydisks opened ?
bne OpenDrivesLoopEnd
OpenDrivesLoopEnd:
cmp.l #0,OpenDriveCount ;TrackDisk-Error ?
beq IntuiEnde2 ;Yes, go to IntuiEnde2
sub.l #4,AddressCounter
sub.l #1,DriveCounter
move.l Intuibase(pc),a6 ;get Intuibase
lea NewWindow(pc),a0 ;get NewWindow-structure
jsr OpenWindow(a6) ;call subroutine
move.l d0,Winhandle ;get Winhandle
bra IntuiWait3 ;jump to IntuiWait3
IntuiWait:
move.l Winhandle(pc),a0 ;get Winhandle
move.l ExecBase,a6 ;get ExecBase
move.l 86(a0),a0 ;get Message
jsr GetMsg(a6) ;call subroutine
IntuiWait3:
move.l Winhandle(pc),a0 ;get Winhandle
move.l 86(a0),a0 ;get Message
move.l ExecBase,a6 ;get ExecBase
jsr WaitPort(a6) ;call subroutine
move.l d0,a1 ;get Message
move.l 20(a1),d1 ;write Message to d1
cmp.l #$8000,d1 ;Diskinserted ?
beq VirusCheck ;Yes, go to VirusCheck
IntuiPart2:
cmp.l #$200,d1 ;WindowClosed ?
beq IntuiEnde ;Yes, end Intui
bra IntuiWait ;Jump to IntuiWait
IntuiEnde:
move.l Winhandle(pc),a0 ;get Winhandle
move.l Intuibase(pc),a6 ;get Intuibase
jsr CloseWindow(a6) ;call subroutine
clr.l AddressCounter ;clear AddressCounter
clr.l DriveCounter ;clear DriveCounter
clr.l DriveLoopCounter ;clear DriveLoopCounter
CloseDriveLoop:
add.l #1,DriveLoopCounter ;count up DriveLoopCounter
bsr BootblockEnde ;close TrackDiskDevice
add.l #4,AddressCounter ;count up AddressCounter
add.l #1,DriveCounter ;count up DriveCounter
move.l DriveLoopCounter(pc),d0
cmp.l OpenDriveCount,d0 ;all drives closed ?
bne CloseDriveLoop ;No, continue the loop
IntuiEnde2:
move.l ExecBase,a6 ;get ExecBase
move.l DiskValMem(pc),a1 ;get MemPtr
move.l #$5000,d0 ;deallocate $5000 bytes
jsr FreeMem(a6) ;call subroutine
rts ;return from subroutine
Even
NewWindow:
dc.w 100
dc.w 0
dc.w 400
dc.w 10
dc.b 0
dc.b 1
dc.l $200!$8000
dc.l $1000!1!2!4!8
dc.l 0
dc.l 0
dc.l Windowtitle
dc.l 0
dc.l 0
dc.w 300
dc.w 10
dc.w 300
dc.w 10
dc.w 1
even
WindowTitle:
dc.b `AntiCicloVir V2.3a by Matthias Gutt`,0
even
Winhandle:
dc.l 0
BootblockStart:
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_CHIP!MEMF_LARGEST,d1;get connected CHIP-RAM
move.l #$2048,d0 ;want $2048 bytes
jsr AllocMem(a6) ;call subroutine
tst.l d0 ;error ?
beq BootblockCheckEnde ;Yes, end BootblockCheck
lea Sectorbuffer(pc),a0 ;get Sectorbuffer
add.l AddressCounter(pc),a0
move.l d0,(a0) ;No, get Sectorbufferaddress
move.l d0,TrackSecBuffer ;get Sectorbuffer in
;TDIOStdReq-structure
cmp.l #0,DriveCounter ;first floopydisk ?
bne BootblockStart2 ;No, skip to BBStart2
move.l #0,a1 ;my task
bsr Task ;jump to subroutine
move.l d0,AntiCicloTask ;get TaskPtr
move.l ExecBase,a6 ;get ExecBase
move.l #-1,d0 ;allocate free signal
jsr AllocSignal(a6) ;call subroutine
cmp.l #0,d0 ;error ?
ble BootblockCheckEnde ;Yes, end the BootblockCheck
clr.l d7 ;No, clear d7
move.l d0,d7 ;get Signalbit
move.b d0,Sigbit ;get Signalbit in
;MsgPort-Structure
BootblockStart2:
move.l ExecBase,a6 ;get ExecBase-address
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #100,d0 ;need 100 bytes
jsr AllocMem(a6) ;call subroutine
tst.l d0 ;error ?
beq FreeSignalIt ;Yes, end BootBlockCheck
lea DeviceMem(pc),a0
add.l AddressCounter(pc),a0
move.l d0,(a0) ;get MemPtr
move.l d0,TrackDeviceMem ;get DeviceMem in
;TDIOStdReq-structure
move.l ExecBase,a6 ;get ExecBase
lea DeviceMem(pc),a0
add.l AddressCounter(pc),a0
move.l (a0),a1 ;get MemPtr
lea Device(pc),a0 ;get Device-structure
move.l #40,d0 ;get size
jsr CopyMem(a6) ;call subroutine
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #100,d0 ;need 100 bytes
jsr AllocMem(a6) ;call subroutine
tst.l d0 ;error ?
beq BootblockCheckEnde2 ;Yes, end BootBlockCheck
lea UnitMem(pc),a0
add.l AddressCounter(pc),a0
move.l d0,(a0) ;get MemPtr
move.l d0,TrackUnitMem ;get UnitMem in
;TDIOStdReq-structure
move.l ExecBase,a6 ;get ExecBase
lea UnitMem(pc),a0
add.l AddressCounter(pc),a0
move.l (a0),a1 ;get MemPtr
lea Unit(pc),a0 ;get Unit-structure
move.l #40,d0 ;get size
jsr CopyMem(a6) ;call subroutine
lea UnitMem(pc),a0 ;get UnitMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a0
add.l #20,a0 ;get UnitMsgList
move.l a0,(a0) ;get lh_Head
move.l a0,8(a0) ;get lh_TailPred
add.l #4,(a0) ;get lh_Tail
cmp.l #0,DriveCounter ;first floppydisk
bne BootBlockStart3
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #1000,d0 ;want 1000 bytes
jsr AllocMem(a6) ;call subroutine
tst.l d0 ;error ?
beq BootBlockCheckEnde3 ;Yes, end the BootblockCheck !
move.l d0,MsgPortMem ;No, get MemPtr
move.l ExecBase,a6 ;get ExecBase
lea MsgPortStructure(pc),a0 ;get MsgPort-structure
move.l MsgPortMem(pc),a1 ;get MsgPortMemPtr
move.l #34,d0 ;get size
jsr CopyMem(a6) ;call subroutine
move.l MsgPortMem(pc),a0
add.l #20,a0 ;get MsgList
move.l a0,(a0) ;get lh_Head
move.l a0,8(a0) ;get lh_TailPred
add.l #4,(a0) ;get lh_Tail
move.l ExecBase,a6 ;get ExecBase
move.l MsgPortMem(pc),a1 ;get MsgPortMemPtr
jsr AddPort(a6) ;call subroutine
BootBlockStart3:
move.l MsgPortMem(pc),d0
move.l d0,TrackDiskMsgPortMem
move.l ExecBase,a6 ;get ExecBase
move.l #MEMF_PUBLIC!MEMF_CHIP!MEMF_CLEAR!MEMF_LARGEST,d1
move.l #100,d0 ;need only 100 bytes
jsr AllocMem(a6) ;call subroutine
tst.l d0 ;error ?
beq BootblockCheckEnde4 ;Yes, end BootblockCheck
lea TrackDiskIOSTDRequestMem(pc),a0
add.l AddressCounter(pc),a0
move.l d0,(a0) ;get MemPtr
move.l ExecBase,a6 ;get ExecBase
lea TrackDiskIOSTdRequestMem(pc),a0
add.l AddressCounter(pc),a0
move.l (a0),a1 ;get TDIOStdReqMem-Ptr
lea TrackdiskIOStdRequest(pc),a0;get TDIOStdReq-structure
move.l #100,d0 ;get size
jsr CopyMem(a6) ;call subroutine
move.l ExecBase,a6 ;get ExecBase
lea TrackDiskIOStdRequestMem(pc),a0
add.l AddressCounter(pc),a0
move.l (a0),a1 ;get TDIOStdReqMem-Ptr
lea TrackName(PC),a0 ;get TrackName
move.l DriveCounter(pc),d0 ;use drive unit x
move.l #0,d1 ;no flags
jsr OpenDeviceRoutine(a6) ;call subroutine
tst.l d0 ;error ?
bne BootBlockCheckEnde5 ;Yes, end BootBlockCheck !
rts ;return from subroutine
ReadBootBlock:
bsr DisplayCheck
lea TrackDiskIOStdRequestMem(pc),a0;Get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.w #02,28(a1) ;enter read-command to TDIOStdReqMemPtr
move.l #2048,$24(a1) ;enter 2048 bytes to TDIOStdReqMemPtr
bsr BootBlockCheck ;jump to subroutine
lea TrackDiskIOStdRequestMem(pc),a0;Get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.w #09,28(a1) ;turn off motor
move.l #0,$24(a1) ;turn off motor
bsr BootBlockCheck ;jump to subroutine
bsr CheckBootMem ;jump to subroutine
rts ;return from subroutine
DisplayCheck:
move.b DriveCounter(pc),d0
add.b d0,DriveNumber
move.l Intuibase(pc),a6 ;get Intuibase
move.l Winhandle(pc),a0 ;get Winhandle-structure
lea CheckWindowTitle(pc),a1 ;get CheckWindowTitle-address
move.l #-1,a2 ;no new screen-title
jsr SetWindowTitles(a6) ;call subroutine
move.b #$30,DriveNumber
rts ;return from subroutine
DisplayWindowTitle:
move.l Intuibase(pc),a6 ;get Intuibase
move.l Winhandle(pc),a0 ;get Winhandle-structure
lea WindowTitle(pc),a1 ;get WindowTitle-structure
move.l #-1,a2 ;no new screen-title
jsr SetWindowTitles(a6) ;call subroutine
rts ;return from subroutine
BootblockCheck:
move.l ExecBase,a6 ;get ExecBase
lea TrackdiskIOStdRequestMem(pc),a0;get IOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
jsr DoIORoutine(a6) ;call subroutine
move.l ExecBase,a6 ;get ExecBase
lea TrackdiskIOStdRequestMem(pc),a0;get IOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
jsr WaitIO(a6) ;call subroutine
move.l ExecBase,a6 ;get ExecBase
move.l MsgPortMem(pc),a0 ;get MsgPortMemPtr
jsr GetMsg(a6) ;call subroutine
move.l d0,TrackDiskMessage
rts ;return from subroutine
WriteBootBlock:
move.l ExecBase,a6 ;get ExecBase
lea Sectorbuffer(pc),a0 ;get Sectorbuffer
add.l AddressCounter(pc),a0
move.l (a0),a1
add.l #4,a1
lea Bootblock(pc),a0 ;get Bootblockprg-Address
clr.l d0
move.b -1(a1),d0
sub.l d0,start
move.l #1020,d0 ;get size
jsr CopyMem(a6) ;call subroutine
lea TrackDiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.w #03,28(a1) ;enter write-command
move.l #1024,$24(a1) ;enter 1024 bytes to write
bsr BootBlockCheck ;jump to subroutine
lea TrackDiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.w #04,28(a1) ;enter update-command
bsr BootblockCheck ;jump to subroutine
lea TrackDiskIOStdRequestMem(pc),a0
add.l AddressCounter(pc),a0
move.l (a0),a1
cmp.b #28,$1F(a1) ;Disk writeprotected ?
beq DiskWriteProtected ;Yes, DiskWriteProtected
lea TrackDiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.w #09,28(a1) ;turn off motor
move.l #0,$24(a1) ;turn off motor
bsr BootBlockCheck ;jump to subroutine
rts ;return from subroutine
DiskWriteProtected:
clr.b $1F(a1) ;clear error-flag
lea TrackDiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.w #09,28(a1) ;turn off motor
move.l #0,$24(a1) ;turn off motor
bsr BootBlockCheck ;jump to subroutine
lea AutoRequestTextPtr(pc),a0 ;get RequestText
move.l #DiskWriteProtectedText,(a0)
lea GadgetTextPtr(pc),a0 ;get GadgetText
move.l #ContinueText,(a0)
lea GadgetText2Ptr(pc),a0 ;get next GadgetText
move.l #ContinueText,(a0)
move.l #0,a0
lea AutoRequestText(pc),a1 ;get RequestText-structure
lea GadgetText(pc),a2 ;get GadgetText-structure
lea GadgetText2(pc),a3 ;get GadgetText2-structure
moveq #0,d0 ;no IDCMP-Flag
moveq #0,d1 ;no IDMCP-Flag
move.l #610,d2 ;get Width for Request
move.l #70,d3 ;get Height for Request
move.l Intuibase(pc),a6 ;get Intuibase
jsr AutoRequest(a6) ;call subroutine
rts ;return from subroutine
BootblockEnde:
move.l ExecBase,a6 ;get ExecBase
lea TrackDiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
jsr CloseDevice(a6) ;call subroutine
cmp.l #0,DriveCounter ;first floppydisk ?
bne BootblockEnde2 ;No, go to BootblockEnde2
move.l ExecBase,a6 ;get ExecBase
move.l MsgPortMem(pc),a1 ;get MsgPortMemPtr
jsr RemPort(a6) ;call subroutine
move.l MsgPortMem(pc),a0 ;get MsgPortMemPtr
move.b #$FF,$8(a0) ;remove listtype
move.l #-1,$14(a0) ;remove flag
move.l ExecBase,a6 ;get ExecBase
move.l MsgPortMem(pc),a1 ;get MsgPortMemPtr
move.l #1000,d0 ;get size
jsr FreeMem(a6) ;call subroutine
BootBlockEnde2:
lea TrackdiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a0
move.b #$FF,$8(a0) ;remove listtype
move.l #$FFFFFFFF,$14(a0) ;remove DevicePtr
move.l #$FFFFFFFF,$18(a0) ;remove UnitPtr
move.l ExecBase,a6 ;get ExecBase
lea TrackDiskIOStdRequestMem(pc),a0;get IOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #100,d0 ;get size
jsr FreeMem(a6) ;call subroutine
move.l ExecBase,a6 ;get ExecBase
lea DeviceMem(pc),a0 ;get DeviceMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #100,d0 ;get size
jsr FreeMem(a6) ;call subroutine
move.l ExecBase,a6 ;get ExecBase
lea UnitMem(pc),a0 ;get UnitMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #100,d0 ;get size
jsr FreeMem(a6) ;call subroutine
cmp.l #0,DriveCounter ;first floppydisk
bne BootBlockEnde3
move.l ExecBase,a6 ;get ExecBase
move.l d7,d0 ;get Signalbit
jsr FreeSignal(a6) ;call subroutine
BootBlockEnde3:
move.l ExecBase,a6 ;get ExecBase
lea Sectorbuffer(pc),a0 ;get Sectorbuffer
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #$2048,d0 ;get size
jsr FreeMem(a6) ;call subroutine
rts ;return from subroutine
CheckBootMem:
bsr DisplayWindowTitle
move.l #185,d0
lea BootblockVirusOffsetlist(pc),a0
lea BootblockVirusTestbytesList(pc),a1
lea BootblockVirusNameList(pc),a3
lea Sectorbuffer(pc),a4
add.l AddressCounter(pc),a4
CompareBootblockLoop:
move.l (a0)+,d1 ;get offset
add.l (a4),d1 ;add offset to Sectorbuffer
move.l d1,a2 ;write d1 to a2
move.l (a2),d1 ;write longword from sectorbuffer to d1
cmp.l (a1)+,d1 ;is this longword = testbytes ?
beq BootblockVirus ;Yes, go to BootBlockVirus
cmp.l #0,(a3)+ ;count BootblockVirusNameList
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne CompareBootblockLoop ;No, continue the loop !
rts ;return from subroutine
BootblockVirus:
lea BootblockVirusName(pc),a0 ;get BootblockVirusNamebuffer
move.l #40,d0 ;get counter
ClearBootblockVirusNameLoop:
move.b #00,(a0)+ ;clear the buffer
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne ClearBootblockVirusNameLoop ;No, continue the loop !
lea BootblockVirusName(pc),a0 ;get BootblockVirusNamebuffer
move.l (a3),a1 ;get VirusText-Address
BootblockVirusNameLoop:
move.b (a1)+,(a0)+ ;write VirusName to BootblockVirusNamebuffer
cmp.b #0,(a1) ;Zero ?
bne BootblockVirusNameLoop ;No, continue the loop !
BootRequester:
Requesterold BootReqText,Install,Continuetext2,#610,#70
cmp.l #1,d0 ;was Gadget touched ?
beq WriteBootblock ;Yes, WriteBootblock
rts ;return from subroutine
BootblockCheckEnde:
bsr NoMemAlert ;jump to subroutine
move.b #$FF,TrackdiskFlag ;set TrackDiskFlag
rts ;return from subroutine
BootblockCheckEnde5:
lea TrackdiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a0
move.b #$FF,$8(a0) ;remove listtype
move.l #$FFFFFFFF,$14(a0) ;remove Devicestructure
move.l #$FFFFFFFF,$18(a0) ;remove UnitStructure
move.l ExecBase,a6 ;get ExecBase
lea TrackdiskIOStdRequestMem(pc),a0;get TDIOStdReqMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #100,d0 ;get size
jsr FreeMem(a6) ;call subroutine
BootblockCheckEnde4:
cmp.l #0,DriveCounter ;first floppydisk ?
bne BootblockCheckEnde3 ;Yes, go to BootblockCheckEnde3
move.l ExecBase,a6 ;get ExecBase
move.l MsgPortMem(pc),a1 ;get MsgPortMemPtr
jsr RemPort(a6) ;call subroutine
move.l MsgPortMem(pc),a0 ;get MsgPortMemPtr
move.b #$FF,$8(a0) ;remove listtype
move.l #-1,$14(a0) ;remove flags
move.l ExecBase,a6 ;get ExecBase
move.l MsgPortMem(pc),a1 ;get MsgPortMemPtr
move.l #1000,d0 ;get size
jsr FreeMem(a6) ;call subroutine
BootblockCheckEnde3:
move.l ExecBase,a6 ;get ExecBase
lea UnitMem(pc),a0 ;get UnitMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #100,d0 ;get size
jsr FreeMem(a6) ;call subroutine
BootBlockCheckEnde2:
move.l ExecBase,a6 ;get ExecBase
lea DeviceMem(pc),a0 ;get DeviceMemPtr
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #100,d0 ;get size
jsr FreeMem(a6) ;call subroutine
FreeSignalIt:
move.l ExecBase,a6 ;get ExecBase
lea Sectorbuffer(pc),a0 ;get Sectorbuffer
add.l AddressCounter(pc),a0
move.l (a0),a1
move.l #$2048,d0 ;get size
jsr FreeMem(a6) ;call subroutine
cmp.l #0,DriveCounter ;first floopydisk ?
bne BootBlockCheckEnde0 ;Yes, go to BootBlockCheckEnde0
move.l ExecBase,a6 ;get ExecBase
move.l d7,d0 ;get Signalbit
jsr FreeSignal(a6) ;call subroutine
BootBlockCheckEnde0:
bsr NoMemAlert ;jump to subroutine
move.b #$FF,TrackdiskFlag ;set TrackDiskFlag
rts ;return from subroutine
even
BootReqText:
dc.b 0,2
dc.b 0
even
dc.w 20,20
dc.l 0
dc.l BootText
dc.l 0
even
Install:
dc.b 0,2
dc.b 0
even
dc.w 12,4
dc.l 0
dc.l InstallText
dc.l 0
InstallText:
dc.b ` Install `,0
even
DiskWriteProtectedText:
dc.b `Trackdisk I/O error: Disk write-protected !`,0
even
MsgPortStructure:
dc.l 0
dc.l 0
dc.b 4
dc.b 0
dc.l PortName
dc.b 0
Sigbit:
dc.b 0
AntiCicloTask:
dc.l 0
dc.l 0
dc.l 0
dc.l 0
dc.b 5
dc.b 0
even
TrackdiskIOStdRequest: ;IOStdRequest-structure
dc.l 0 ;Ptr of successor
dc.l 0 ;Ptr of predecessor
dc.b 6 ;messagetype
dc.b 0 ;priority
dc.l MessageName ;Ptr of Messagename
TrackDiskMsgPortMem:
dc.l 0 ;Ptr of MsgPort
dc.w 56 ;messagelength
TrackDeviceMem:
dc.l 0
TrackUnitMem: ;Ptr to Device-structure
dc.l 0 ;Ptr to Unit-structure
dc.w 2 ;Command
dc.b 0 ;Flags
dc.b 0 ;Errorbyte
dc.l 0 ;Actualbyte
dc.l 2048 ;Number of Bytes
TrackSecbuffer:
dc.l 0 ;Buffer-address
dc.l 0 ;Sector-Nr.
dc.l 0 ;DiskChangeCount
dc.l 0 ;SecLabelBuffer
even
Device:
dc.l 0
dc.l 0
dc.b 3
dc.b 0
dc.l TrackName
dc.b 0
dc.b 0
dc.w 0
dc.w 0
dc.w 0
dc.w 0
dc.l TrackName
dc.l 0
dc.w 0
even
Unit:
dc.l 0
dc.l 0
dc.b 4
dc.b 0
dc.l 0
dc.b 0
dc.b 0
dc.l 0
dc.l 0
dc.l 0
dc.l 0
dc.b 5
dc.b 0
dc.b 0
dc.b 0
dc.w 0
even
CheckWindowTitle:
dc.b `checking floppydrive DF`
DriveNumber: dc.b `0: !!!`,0
even
MsgPortMem:
dc.l 0
TrackdiskIOStdRequestMem:
dc.l 0
dc.l 0
dc.l 0
dc.l 0
DeviceMem:
dc.l 0
dc.l 0
dc.l 0
dc.l 0
UnitMem:
dc.l 0
dc.l 0
dc.l 0
dc.l 0
TrackDiskMessage:
dc.l 0
Sectorbuffer:
dc.l 0
dc.l 0
dc.l 0
dc.l 0
TrackdiskFlag:
dc.b 0
even
OpenDriveCount:
dc.l 0
even
DriveCounter:
dc.l 0
even
DriveLoopCounter:
dc.l 0
even
AddressCounter:
dc.l 0
even
MessageName:
dc.b `AntiCicloVir.message`,0
even
PortName:
dc.b `AntiCicloVir.port`,0
even
BootText:
dc.b `VIRUS in Bootsectors: `
Bootblockvirusname: blk.b 40,0
even
BootblockvirusNameList:
dc.l The16BitCrewText
dc.l The2001Text
dc.l AEKText
dc.l AHCText
dc.l AIDSText
dc.l AIDS2Text
dc.l AlienNewBeatText
dc.l AmigaFreakText
dc.l AmigaMasterText
dc.l AngelText
dc.l ASSText
dc.l ASVText
dc.l AsylantText
dc.l AustralianParasiteText
dc.l BadBytesText
dc.l BamigaSectorOneText
dc.l BBProtText
dc.l BigBossText
dc.l BlackflashText
dc.l BladeRunnersText
dc.l BLFText
dc.l BlizzProV31Text
dc.l BlizzProV33Text
dc.l BlowJobText
dc.l BootXText
dc.l ButonicText
dc.l ByteBanditText
dc.l ByteBanditPlusText
dc.l ByteBandit2Text
dc.l ByteBanditturboText
dc.l ByteVoyagerText
dc.l ByteVoyagerIIText
dc.l ByteWarriorText
dc.l CascadeText
dc.l CCCPText
dc.l ClaasAbrahamText
dc.l ClonkText
dc.l CobraText
dc.l CodersNightmareText
dc.l CopyLockText
dc.l CrackerExterminatorText
dc.l DAGText
dc.l DAT89Text
dc.l DatacrimeText
dc.l DestructorText
dc.l DetlefText
dc.l DigitalEmotionsText
dc.l DisgustText
dc.l DiskDoktorsText
dc.l DISKFurunkelText
dc.l DiskGuardText
dc.l DiskHerpesText
dc.l DiskTerminatorText
dc.l DivinaExterminatorText
dc.l DottyText
dc.l DUMDUMText
dc.l ElectroVisionText
dc.l EuropeanText
dc.l ExcrementText
dc.l ExecutorsText
dc.l ExtremeText
dc.l FASTText
dc.l FastEddieText
dc.l FICAText
dc.l ForpibText
dc.l FrityText
dc.l fuckdeviceText
dc.l GadaffiText
dc.l GermanyText
dc.l GlasnostText
dc.l GraffitiText
dc.l GremlinText
dc.l GuardiansBootAidsText
dc.l GXTeamText
dc.l GyrosText
dc.l HaukeText
dc.l HCSText
dc.l HCSIIText
dc.l HighlanderText
dc.l HillyText
dc.l HODENText
dc.l IceText
dc.l IncognitoText
dc.l IndianaJonesText
dc.l InfectorText
dc.l InfluenzaText
dc.l IngerIQText
dc.l IngoText
dc.l JITRText
dc.l JoshuaText
dc.l JulieText
dc.l KaukiText
dc.l KefrensText
dc.l KilledText
dc.l LADSText
dc.l LameBlameText
dc.l LamerExterminatoroldText
dc.l LamerExterminatornewText
dc.l LamerExterminatorIText
dc.l LamerExterminatorIIText
dc.l LamerExterminatorIIIText
dc.l LamerExterminatorIVText
dc.l LamerExterminatorVText
dc.l LamerExterminatorVIText
dc.l LoverboySexmachineText
dc.l LSDText
dc.l MADText
dc.l MADIIText
dc.l MallanderText
dc.l MEXXText
dc.l MGM89Text
dc.l MICROSYSTEMSText
dc.l MOSHText
dc.l MOSH2Text
dc.l MutilatorText
dc.l NastyNastyText
dc.l NorthStarText
dc.l NorthStarIIText
dc.l ObeliskText
dc.l Obelisk2Text
dc.l OPAPAText
dc.l OverkillText
dc.l PARATAXIText
dc.l PARATAXIIText
dc.l PARATAXIIIText
dc.l PayDayText
dc.l PentagonSlayerText
dc.l PentagonSlayer2Text
dc.l PentagonSlayer3Text
dc.l PlastiqueText
dc.l REPText
dc.l RevengeBootloaderText
dc.l REVENGEText
dc.l SachsenText
dc.l SADDAMHUSSEINText
dc.l SaoPauloText
dc.l SATANText
dc.l SCAText
dc.l ScarfaceText
dc.l SendarionText
dc.l SherlockText
dc.l ShitText
dc.l SSText
dc.l SSIIText
dc.l SuicideMachineText
dc.l SuperboyText
dc.l SupplyTeamText
dc.l SystemZV30Text
dc.l SystemZV40Text
dc.l SystemZV50Text
dc.l SystemZV51Text
dc.l SystemZV53Text
dc.l SystemZV54Text
dc.l SystemZV61Text
dc.l SystemZV64Text
dc.l SystemZV65Text
dc.l TargetText
dc.l TelstarText
dc.l TermigatorText
dc.l TFCRevengeText
dc.l TimeBombText
dc.l TNKText
dc.l TomatesGentechnic10Text
dc.l TomatesGentechnic20Text
dc.l TURKText
dc.l UltrafoxText
dc.l UKLamerStyleText
dc.l USSR492Text
dc.l VCCofTNTText
dc.l VIPHSText
dc.l VirusConstructionSetBootblockText
dc.l VirusSlayerText
dc.l VirusV1Text
dc.l WAFTText
dc.l WahnfriedText
dc.l WARHAWKText
dc.l WarsawAvengerText
dc.l ZACCESSV10Text
dc.l ZACCESSV20Text
dc.l ZACCESSV30Text
dc.l ZenkerText
dc.l ZESTText
dc.l ZLXText
dc.l ZombiText
even
BootblockvirusTestbytesList:
dc.l `Crew`
dc.l `0012`
dc.l ` AEK`
dc.l `A.H.`
dc.l `HIV!`
dc.l ` Ken`
dc.l `ALIE`
dc.l `AMIG`
dc.l `Mast`
dc.l $4EAEFF3A
dc.l ` PRO`
dc.l `SV!A`
dc.l `ASYL`
dc.l `Aust`
dc.l `BOUT`
dc.l `BS1!`
dc.l `B-Pr`
dc.l `_BOS`
dc.l `blac`
dc.l `lade`
dc.l `dos.`
dc.l $332E3100
dc.l $332E3300
dc.l `Allo`
dc.l `Viru`
dc.l `BAHA`
dc.l `Band`
dc.l `NqNq`
dc.l `os.l`
dc.l `trac`
dc.l $61000336
dc.l $600002E6
dc.l `DASA`
dc.l `Casc`
dc.l `CCCP`
dc.l $B18536B7
dc.l `CLON`
dc.l ` COB`
dc.l `CODE`
dc.l $0007F000
dc.l `CRAC`
dc.l ` DAG`
dc.l `T '8`
dc.l `DATA`
dc.l `estr`
dc.l $41FA001A
dc.l `EMOT`
dc.l `Viru`
dc.l ` Dis`
dc.l `DISK`
dc.l `DISK`
dc.l ` H e`
dc.l `DISK`
dc.l `dos.`
dc.l `Dott`
dc.l `MDUM`
dc.l `ELEC`
dc.l `Euro`
dc.l `EXCR`
dc.l `XECU`
dc.l `XTRE`
dc.l $0007F000
dc.l $6000FC38
dc.l `F.I.`
dc.l `FORP`
dc.l `rity`
dc.l `fuck`
dc.l `GADA`
dc.l `Germ`
dc.l `Glas`
dc.l `fiti`
dc.l `grap`
dc.l `-aid`
dc.l `intu`
dc.l `GYRO`
dc.l `Hauk`
dc.l `H.C.`
dc.l `H.C.`
dc.l `HIGH`
dc.l $0007FF00
dc.l `HODE`
dc.l `INC!`
dc.l $2C790000
dc.l `iana`
dc.l $6000FC38
dc.l `FUCK`
dc.l `nger`
dc.l `INGO`
dc.l `JITR`
dc.l $00BFE001
dc.l $E0014E75
dc.l `dos.`
dc.l `efre`
dc.l `Kill`
dc.l `LADS`
dc.l $6100FFDE
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $FEDC0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l $ABCD0000
dc.l ` Sex`
dc.l `LSD!`
dc.l `Infe`
dc.l `cker`
dc.l `DERK`
dc.l `MEXX`
dc.l `MGM8`
dc.l `MICR`
dc.l `MOSH`
dc.l `MOSH`
dc.l `dos.`
dc.l `Nast`
dc.l `Nort`
dc.l `Nort`
dc.l `GURU`
dc.l ` OBE`
dc.l ` OPA`
dc.l $4BF90007
dc.l `TAX `
dc.l `ATAX`
dc.l `ATAX`
dc.l `PayD`
dc.l `enta`
dc.l `Circ`
dc.l `enta`
dc.l ` P L`
dc.l `REP!`
dc.l `Reve`
dc.l `Reve`
dc.l $00078400
dc.l `2000`
dc.l `PAUL`
dc.l `SATA`
dc.l `SCA!`
dc.l `SCAR`
dc.l `Send`
dc.l `ORSI`
dc.l $6100000A
dc.l `!SS!`
dc.l `HEIL`
dc.l $2C790000
dc.l `Supe`
dc.l ` Sup`
dc.l `3.0 `
dc.l `4.0 `
dc.l `5.0 `
dc.l `5.1 `
dc.l `V5.3`
dc.l `V5.4`
dc.l `V6.1`
dc.l `V6.4`
dc.l `V6.5`
dc.l $43524E00
dc.l `6.0 `
dc.l `intu`
dc.l ` 199`
dc.l `IME `
dc.l `TNK!`
dc.l `OMAT`
dc.l `Toma`
dc.l `TURK`
dc.l $4EF900FC
dc.l $61000338
dc.l `Sent`
dc.l `grap`
dc.l `VIPH`
dc.l $00BFE001
dc.l `VIRU`
dc.l `sind`
dc.l $2C780004
dc.l `AHNF`
dc.l `WARH`
dc.l `Wars`
dc.l `ZACC`
dc.l `ZACC`
dc.l `ACCE`
dc.l `ZENK`
dc.l `Z.E.`
dc.l `ZLX!`
dc.l $075A6F6D
even
BootblockvirusOffsetList:
dc.l $000001E0
dc.l $000003F0
dc.l $000003D0
dc.l $000002FC
dc.l $000003F0
dc.l $000002D0
dc.l $00000240
dc.l $0000001E
dc.l $0000037A
dc.l $00000054
dc.l $00000344
dc.l $000002F0
dc.l $00000330
dc.l $0000036C
dc.l $000003A0
dc.l $000003F0
dc.l $00000338
dc.l $000003F0
dc.l $00000010
dc.l $00000330
dc.l $0000030E
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000028E
dc.l $0000032C
dc.l $00000020
dc.l $000002A8
dc.l $000003C2
dc.l $00000320
dc.l $00000010
dc.l $0000000C
dc.l $000000C0
dc.l $000003E2
dc.l $00000054
dc.l $00000004
dc.l $000003B8
dc.l $00000306
dc.l $0000005A
dc.l $00000018
dc.l $00000014
dc.l $000003BA
dc.l $000002C0
dc.l $000001C6
dc.l $000001F4
dc.l $00000010
dc.l $00000280
dc.l $000001B8
dc.l $000003E8
dc.l $000003B2
dc.l $000002F4
dc.l $00000390
dc.l $000003C6
dc.l $00000096
dc.l $00000018
dc.l $00000010
dc.l $00000010
dc.l $00000010
dc.l $00000054
dc.l $00000348
dc.l $00000274
dc.l $00000044
dc.l $000003F8
dc.l $000003F2
dc.l $0000001A
dc.l $00000018
dc.l $000002DA
dc.l $00000040
dc.l $00000010
dc.l $00000730
dc.l $00000390
dc.l $00000360
dc.l $00000394
dc.l $000001E0
dc.l $0000023E
dc.l $00000010
dc.l $00000328
dc.l $0000034E
dc.l $0000025C
dc.l $0000009C
dc.l $000002D4
dc.l $000003F0
dc.l $00000120
dc.l $00000320
dc.l $000003F8
dc.l $00000066
dc.l $00000014
dc.l $00000008
dc.l $00000008
dc.l $000001F4
dc.l $00000334
dc.l $00000298
dc.l $000003AC
dc.l $00000264
dc.l $00000008
dc.l $00000058
dc.l $000003A6
dc.l $00000396
dc.l $00000342
dc.l $00000392
dc.l $000003F4
dc.l $000003AE
dc.l $000003AA
dc.l $00000396
dc.l $000001E0
dc.l $000003F0
dc.l $00000010
dc.l $000000A0
dc.l $00000008
dc.l $000003F0
dc.l $00000282
dc.l $000003F4
dc.l $00000016
dc.l $00000016
dc.l $000002A0
dc.l $000001D6
dc.l $00000010
dc.l $00000012
dc.l $00000038
dc.l $00000370
dc.l $00000368
dc.l $00000014
dc.l $000003F0
dc.l $000003B0
dc.l $00000220
dc.l $00000010
dc.l $00000286
dc.l $00000370
dc.l $000002DA
dc.l $00000210
dc.l $000003F0
dc.l $00000010
dc.l $000003E2
dc.l $00000038
dc.l $00000012
dc.l $000002F0
dc.l $00000280
dc.l $000003F0
dc.l $00000308
dc.l $000003E2
dc.l $000002F6
dc.l $00000010
dc.l $00000012
dc.l $0000001A
dc.l $0000032C
dc.l $000002E2
dc.l $00000324
dc.l $0000002C
dc.l $0000002C
dc.l $0000002C
dc.l $0000002C
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000002A
dc.l $0000019C
dc.l $00000024
dc.l $000003EC
dc.l $0000002C
dc.l $00000342
dc.l $000003F0
dc.l $00000182
dc.l $00000040
dc.l $00000066
dc.l $00000036
dc.l $00000368
dc.l $00000054
dc.l $00000168
dc.l $00000022
dc.l $00000146
dc.l $00000010
dc.l $00000322
dc.l $00000050
dc.l $00000312
dc.l $00000366
dc.l $00000386
dc.l $000001D6
dc.l $00000016
dc.l $0000027A
dc.l $00000252
dc.l $00000332
dc.l $000003F0
dc.l $00000184
CPUCrashDummy:
dc.l $00000000
even
BootBlock:
start:
dc.l $7ECF6BD7
dc.l 880
main: lea dosname2(PC),a1
jsr -96(a6)
tst.l d0
beq.S error
move.l d0,a0
move.l $16(a0),a0
moveq #0,d0
halt: rts
error: moveq #-1,d0
bra.S halt
dosname2: dc.b 'dos.library',0
dc.b `Disk installed by AntiCicloVir V2.3a`,0
dc.b `Send new viruses to Matthias Gutt * Kantstr. 16 `,0
dc.b `* 21335 Lueneburg * Germany`,0
blk.b 900,0
even
VirusCheck:
move.l DiskValMem(pc),a5 ;get DiskValMemPtr
move.l #SADDAM,d4 ;get pathname
move.l Dosbase(pc),a6 ;get DosBase
move.l #SADDAM,d1 ;get filename
move.l #1005,d2 ;mode old
jsr Open(a6) ;call subroutine
cmp.l #0,d0 ;Error ?
beq VirusCheckEnde ;Yes, go to VirusCheckEnde
move.l d0,DiskValHandle ;No, get DiskValHandle
move.l Dosbase(pc),a6 ;get DosBase
move.l DiskValHandle(pc),d1 ;get DiskValHandle
move.l a5,d2 ;get filebuffer
move.l #1848,d3 ;get size
jsr Read(a6) ;call subroutine
move.l Dosbase(pc),a6 ;get DosBase
move.l DiskValHandle(pc),d1 ;get DiskValHandle
jsr Close(a6) ;call subroutine
cmp.l #"BitM",$00000702(a5) ;SADDAM-Virus ?
beq SADDAMRequest ;Yes !
cmp.l #$60040000,$00000024(a5) ;RoLE-Virus ?
beq ReturnRequest ;Yes !
cmp.l #"trac",$000006C0(a5) ;DiskVal1234-Virus ?
beq DiskVal1234Request ;Yes !
VirusCheckEnde:
clr.l DriveLoopCounter ;clear DriveLoopCounter
clr.l DriveCounter ;clear DriveCounter
clr.l AddressCounter ;clear AddressCounter
DriveLoop:
bsr ReadBootblock ;jump to subroutine
add.l #1,DriveLoopCounter ;count up
add.l #1,DriveCounter ;count up
add.l #4,AddressCounter ;count up
move.l DriveLoopCounter,d0
cmp.l OpenDriveCount,d0 ;all floppydisks read ?
bne DriveLoop
DriveLoopEnd:
sub.l #4,AddressCounter
sub.l #1,DriveCounter
bra IntuiWait ;Go to IntuiWait
SADDAMRequest:
Requester #SADDAMReq,#ContinueText,#ContinueText,#610,#70
bsr KillFileVirus2 ;jump to subroutine
bra VirusCheckEnde ;end VirusCheck
ReturnRequest:
Requester #ReturnReq,#ContinueText,#ContinueText,#610,#70
move.l #SADDAM,d4 ;get pathname
bsr KillFileVirus3 ;jump to subroutine
bra VirusCheckEnde ;end VirusCheck
DiskVal1234Request:
Requester #DiskVal1234Req,#ContinueText,#ContinueText,#610,#70
bsr KillFileVirus2 ;jump to subroutine
bra VirusCheckEnde ;end VirusCheck
Hochofen:
lea HochofenText(pc),a0 ;get HochofenTextaddress
move.l a0,(a3)
bra AMIGAMemoryVirus ;jump to subroutine
ModemChecker:
lea ModemCheckerText(pc),a0 ;get ModemCheckerTextaddress
move.l a0,(a3)
bra AMIGAMemoryVirus ;jump to subroutine
even
SADDAMReq:
dc.b `Disk-Validator: SADDAM Virus !!!`,0
even
ReturnReq:
dc.b `Disk-Validator: Return of the Lamer Exterminator virus !!!`,0
even
DiskVal1234Req:
dc.b `Disk-Validator: DiskVal1234 virus !!!`,0
DiskValHandle:
dc.l 0
DiskValMem:
dc.l 0
even
SADDAM:
dc.b `:l/Disk-Validator`,0
AMIGAMemoryVirus:
move.l Intuibase(pc),a6 ;get Intuibase
lea NewWindow(pc),a0 ;get NewWindow-structure
jsr OpenWindow(a6) ;call subroutine
move.l d0,Winhandle ;get Winhandle
move.l #40,d0 ;get counter
lea VirusName(pc),a0 ;get VirusNamebuffer
ClearVirusNameLoop:
move.b #00,(a0)+ ;clear the buffer
sub.l #1,d0 ;count down
cmp.l #0,d0 ;Zero ?
bne ClearVirusNameLoop ;No, continue the loop !
lea VirusName(pc),a0 ;get VirusNameBuffer
move.l (a3),a1 ;get VirusNameText-Address
AMIGAMemoryVirusNameLoop:
move.b (a1)+,(a0)+ ;write VirusNameText to
;VirusNameBuffer
cmp.b #0,(a1) ;Zero ?
bne AMIGAMemoryVirusNameLoop ;No, continue the loop !
AMIGAMemoryVirusRequest:
Requester #MemoryText,#ContinueText,#ContinueText,#610,#70
move.l Winhandle(pc),a0 ;get Winhandle
move.l Intuibase(pc),a6 ;get Intuibase
jsr CloseWindow(a6) ;call subroutine
bra KillMem ;jump to subroutine
even
MemoryText:
dc.b `VIRUS IS STILL in memory: `
Virusname: blk.b 40,0
even
VirusNameList:
The16BitCrewText:
dc.b `16 Bit Crew`,0
even
The2001Text:
dc.b `2001`,0
even
AEKText:
dc.b `AEK`,0
even
AHCText:
dc.b `A.H.C.`,0
even
AIDSText:
dc.b `AIDS (SCA)`,0
even
AIDS2Text:
dc.b `AIDS (VKill)`,0
even
AlienNewBeatText:
dc.b `Alien New Beat V1.0`,0
even
AmigaFreakText:
dc.b `AMIGA Freak`,0
even
AmigaKnightText:
dc.b `AMIGA Knight`,0
even
AmigaMasterText:
dc.b `AMIGA Master`,0
even
AngelText:
dc.b `Angel`,0
even
AntiChristText:
dc.b `AntiChrist`,0
even
AntiChristTextText:
dc.b `AntiChrist-Text`,0
even
ASSText:
dc.b `ASS Virusprotector V1.0`,0
even
ASVText:
dc.b `ASV V0.000123`,0
even
AsylantText:
dc.b `Asylant`,0
even
AustralianParasiteText:
dc.b `Australian Parasite`,0
even
BadBytesText:
dc.b `Bad Bytes`,0
even
BamigaSectorOneText:
dc.b `Bamiga Sector One`,0
even
BBProtText:
dc.b `BB-Prot`,0
even
BeethovenText:
dc.b `Beethoven`,0
even
BestialDevastationText:
dc.b `Bestial Devastation`,0
even
BGS9Text:
dc.b `BGS 9`,0
even
BGS9IIText:
dc.b `BGS 9 II`,0
even
BigBossText:
dc.b `Big Boss`,0
even
BlackflashText:
dc.b `Blackflash V2.0`,0
even
BladeRunnersText:
dc.b `Blade Runners`,0
even
BLFText:
dc.b `BLF`,0
even
BlizzProV31Text:
dc.b `Blizz Pro V3.1`,0
even
BlizzProV33Text:
dc.b `Blizz Pro V3.3`,0
even
BlowJobText:
dc.b `BlowJob`,0
even
BlueboxText:
dc.b `BlueBox.icon.library`,0
even
BootXText:
dc.b `BootX`,0
even
BretHawnesText:
dc.b `Bret Hawnes`,0
even
ButonicText:
dc.b `Butonic 1.1`,0
even
ByteBanditText:
dc.b `Byte Bandit`,0
even
ByteBanditPlusText:
dc.b `Byte Bandit +`,0
even
ByteBandit2Text:
dc.b `Byte Bandit 2`,0
even
ByteBanditturboText:
dc.b `Byte Bandit turbo`,0
even
ByteVoyagerText:
dc.b `BYTE VOYAGER`,0
even
ByteVoyagerIIText:
dc.b `Byte Voyager II`,0
even
ByteWarriorText:
dc.b `Byte Warrior`,0
even
CascadeText:
dc.b `Cascade`,0
even
CCCPText:
dc.b `CCCP`,0
even
ClaasAbrahamText:
dc.b `Claas Abraham`,0
even
ClonkText:
dc.b `CLONK`,0
even
COBRAText:
dc.b `COBRA`,0
even
CodersNightmareText:
dc.b `Coders Nightmare`,0
even
CommodoreText:
dc.b `Commodore`,0
even
CopyLockText:
dc.b `CopyLock`,0
even
ColorText:
dc.b `Color (TURK V1.3)`,0
even
CompuPhagozyteText:
dc.b `CompuPhagozyte`,0
even
CompuPhagozyte2Text:
dc.b `CompuPhagozyte 2`,0
even
CompuPhagozyteIIText:
dc.b `COMPUPhagozyte II`,0
even
CompuPhagozyteIIIText:
dc.b `CompuPhagozyte III A`,0
even
CompuPhagozyteIIIBCText:
dc.b `CompuPhagozyte III B/C`,0
even
CompuPhagozyteIVText:
dc.b `CompuPhagozyte IV`,0
even
CrackerExterminatorText:
dc.b `Cracker Exterminator`,0
even
Crime2Text:
dc.b `Crime 2`,0
even
CrimePlusText:
dc.b `Crime!++`,0
even
DStructureText:
dc.b `D-Structure`,0
even
DAGText:
dc.b `DAG`,0
even
DAGCreatorText:
dc.b `DAG-Creator`,0
even
DarthVaderText:
dc.b `DARTH VADER 1.1`,0
even
DAT89Text:
dc.b `DAT '89`,0
even
DatacrimeText:
dc.b `Datacrime`,0
even
DestructorText:
dc.b `Destructor V1.2`,0
even
DetlefText:
dc.b `Detlef`,0
even
DigitalEmotionsText:
dc.b `DIGITAL EMOTIONS`,0
even
DisasterMasterText:
dc.b `DISASTER-MASTER V2`,0
even
DisgustText:
dc.b `Disgust`,0
even
DiskDoktorsText:
dc.b `Disk-Doktors`,0
even
DISKFurunkelText:
dc.b `DISK-Furunkel`,0
even
DiskguardText:
dc.b `DISK GUARD V1.0`,0
even
DiskHerpesText:
dc.b `Disk-Herpes`,0
even
DiskKillerText:
dc.b `DISK-KILLER V1.0`,0
even
DiskTerminatorText:
dc.b `Disk-Terminator`,0
even
DisktroyerV10Text:
dc.b `Disktroyer V1.0`,0
even
DisktroyerV20Text:
dc.b `Disktroyer V2.0`,0
even
DiskVal1234Text:
dc.b `Disk-Val1234`,0
even
DivinaExterminatorText:
dc.b `Divina Exterminator`,0
even
DMTrashText:
dc.b `DM-Trash`,0
even
DottyText:
dc.b `Dotty`,0
even
DriveInfoText:
dc.b `Drive Info(Crime!Linkvirus)`,0
even
DUMDUMText:
dc.b `DUMDUM`,0
even
ElectroVisionText:
dc.b `ELECTRO.VISION`,0
even
EuropeanText:
dc.b `European`,0
even
ExcrementText:
dc.b `EXCREMENT`,0
even
ExcrementCreatorText:
dc.b `EXCREMENT Creator`,0
even
ExecutorsText:
dc.b `EXECUTORS`,0
even
ExtremeText:
dc.b `EXTREME`,0
even
FASTText:
dc.b `F.A.S.T`,0
even
FastEddieText:
dc.b `Fast Eddie`,0
even
FICAText:
dc.b `FICA`,0
even
ForpibText:
dc.b `FORPIB`,0
even
FreedomText:
dc.b `Freedom!`,0
even
FrityText:
dc.b `Frity`,0
even
fuckdeviceText:
dc.b `fuck.device`,0
even
GadaffiText:
dc.b `GADAFFI`,0
even
GermanyText:
dc.b `Germany`,0
even
GlasnostText:
dc.b `GLASNOST`,0
even
GoldenRiderText:
dc.b `Golden Rider`,0
even
GotchaLamerText:
dc.b `Gotcha Lamer`,0
even
GotchaLamerCreatorText:
dc.b `Gotcha Lamer Creator`,0
even
GraffitiText:
dc.b `Graffiti`,0
even
GremlinText:
dc.b `Gremlin`,0
even
GuardiansBootAidsText:
dc.b `Guardians BootAids`,0
even
GXTeamText:
dc.b `GX.Team`,0
even
GyrosText:
dc.b `GYROS`,0
even
GZUSText:
dc.b `G-Zus`,0
even
HARDEXText:
dc.b `HARDEX`,0
even
HaukeText:
dc.b `Hauke`,0
even
HCSText:
dc.b `H.C.S`,0
even
HCSIIText:
dc.b `H.C.S II`,0
even
HighlanderText:
dc.b `HIGHLANDER`,0
even
HillyText:
dc.b `Hilly`,0
even
HochofenText:
dc.b `Hochofen`,0
even
HODENText:
dc.b `HODEN V33.17`,0
even
IceText:
dc.b `ICE`,0
even
IncognitoText:
dc.b `Incognito`,0
even
IndianaJonesText:
dc.b `Indiana Jones`,0
even
InfectorText:
dc.b `Infector`,0
even
InfluenzaText:
dc.b `INFLUENZA`,0
even
IngerIQText:
dc.b `Inger IQ`,0
even
IngoText:
dc.b `INGO`,0
even
IngosReturnText:
dc.b `INGOs Return`,0
even
IntelText:
dc.b `INTEL`,0
even
IRQText:
dc.b `IRQ`,0
even
JeffBUTONICV131Text:
dc.b `Jeff BUTONIC V1.31`,0
even
JeffBUTONICV300Text:
dc.b `Jeff BUTONIC V3.00`,0
even
JITRText:
dc.b `JITR`,0
even
JoshuaText:
dc.b `Joshua`,0
even
Joshua2Text:
dc.b `Joshua 2`,0
even
JulieText:
dc.b `Julie`,0
even
KaukiText:
dc.b `Kauki`,0
even
KefrensText:
dc.b `Kefrens`,0
even
KilledText:
dc.b `Killed`,0
even
LADSText:
dc.b `LADS`,0
even
LAMEText:
dc.b `LAME`,0
even
LameBlameText:
dc.b `Lame Blame!`,0
even
LamerExterminatoroldText:
dc.b `old LAMER Exterminator`,0
even
LamerExterminatoroldIIIText:
dc.b `(old) LAMER Exterminator (III)`,0
even
LamerExterminatornewText:
dc.b `new Lamer Exterminator`,0
even
LamerExterminatorIText:
dc.b `LAMER Exterminator I`,0
even
LamerExterminatorIIText:
dc.b `LAMER Exterminator II`,0
LamerExterminatorIIIText:
dc.b `LAMER Exterminator III`,0
even
LamerExterminatorIVText:
dc.b `LAMER Exterminator IV`,0
even
LamerExterminatorIVVText:
dc.b `LAMER Exterminator IV or V`,0
even
LamerExterminatorVText:
dc.b `LAMER Exterminator V`,0
even
LamerExterminatorVIText:
dc.b `LAMER Exterminator VI`,0
even
LamerExterminatorVIItext:
dc.b `LAMER Exterminator VII`,0
even
LamerExterminatorVIIIText:
dc.b `LAMER Exterminator VIII`,0
even
LamerLoadWBText:
dc.b `LAMER LoadWB`,0
even
LamerVirusXText:
dc.b `LAMER VirusX`,0
even
Liberatorv121Text:
dc.b `Liberator v1.21`,0
even
Liberatorv30Text:
dc.b `Liberator v3.0`,0
even
Liberatorv501Text:
dc.b `Liberator v5.01`,0
even
LOOMText:
dc.b `LOOM`,0
even
LoverboySexmachineText:
dc.b `Loverboy & Sexmachine`,0
even
LSDText:
dc.b `LSD`,0
even
MADText:
dc.b `MAD`,0
even
MADIIText:
dc.b `MAD II`,0
even
MallanderText:
dc.b `MALLANDER V1.0`,0
even
MENEMSREVENGEText:
dc.b `MENEMs REVENGE`,0
even
MEXXText:
dc.b `MEXX`,0
even
MGM89Text:
dc.b `MGM 89`,0
even
MICROSYSTEMSText:
dc.b `MICROSYSTEMS`,0
even
ModemCheckerText:
dc.b `MODEMCHECKER`,0
even
ModemCheckerLoadWBText:
dc.b `MODEMCHECKER LoadWB`,0
even
MOSHText:
dc.b `MOSH`,0
even
MOSH2Text:
dc.b `MOSH 2`,0
even
MutilatorText:
dc.b `Mutilator`,0
even
NANOoldText:
dc.b `old NANO`,0
even
NanonewText:
dc.b `Nano (new)`,0
even
NaSTText:
dc.b `NaST`,0
even
NastyNastyText:
dc.b `Nasty-nasty`,0
even
NoGuruV20Text:
dc.b `No Guru V2.0`,0
even
NorthStarText:
dc.b `NORTH STAR`,0
even
NorthStarIIText:
dc.b `NORTH STAR II`,0
even
ObeliskText:
dc.b `OBELISK`,0
even
Obelisk2Text:
dc.b `OBELISK 2`,0
even
OPAPAText:
dc.b `OPAPA`,0
even
OverkillText:
dc.b `Overkill`,0
even
PARATAXIText:
dc.b `PARATAX I`,0
even
PARATAXIIText:
dc.b `PARATAX II`,0
even
PARATAXIIIText:
dc.b `PARATAX III`,0
even
PayDayText:
dc.b `PayDay`,0
even
PentagonSlayerText:
dc.b `Pentagon-Slayer`,0
even
PentagonSlayer2Text:
dc.b `Pentagon-Slayer 2`,0
even
PentagonSlayer3Text:
dc.b `Pentagon-Slayer 3`,0
even
PlastiqueText:
dc.b `Plastique`,0
even
PPBombText:
dc.b `PP-Bomb`,0
even
QRDLText:
dc.b `QRDL 1.1`,0
even
RedOctoberText:
dc.b `Red October 1.7`,0
even
REPText:
dc.b `REP!`,0
even
ReturnoftheLamerExterminatorText:
dc.b `Return of the Lamer Exterminator`,0
even
RevengeBootloaderText:
dc.b `Revenge Bootloader`,0
even
RevengeOfTheLamerExterminatorText:
dc.b `Revenge Of The LAMER Exterminator`,0
even
RevengeOfTheLamerExterminator2Text:
dc.b `Revenge Of The LAMER Exterminator 2`,0
even
REVENGEText:
dc.b `REVENGE V1.2`,0
even
RISCText:
dc.b `RISC`,0
even
SachsenText:
dc.b `SACHSEN No.1`,0
even
SADDAMText:
dc.b `SADDAM`,0
even
SADDAMHUSSEINText:
dc.b `SADDAM HUSSEIN`,0
even
SaoPauloText:
dc.b `Sao Paulo`,0
even
SATANText:
dc.b `SATAN`,0
even
SCAText:
dc.b `SCA`,0
even
SCARFACEText:
dc.b `SCARFACE`,0
even
SendarionText:
dc.b `Sendarion #1`,0
even
SEPULTURAText:
dc.b `SEPULTURA`,0
even
SherlockText:
dc.b `Sherlock2.0`,0
even
ShitText:
dc.b `Shit`,0
even
ShowSysopText:
dc.b `ShowSysop`,0
even
SmilyCancerText:
dc.b `Smily Cancer`,0
even
SmilyCancerLoadWBText:
dc.b `Smily Cancer LoadWB`,0
even
SnoopDosText:
dc.b `SnoopDos 1.6`,0
even
SonjaText:
dc.b `Sonja`,0
even
SSText:
dc.b `SS`,0
even
SSIIText:
dc.b `SS II`,0
even
SuicideMachineText:
dc.b `Suicide Machine`,0
even
SuperboyText:
dc.b `Superboy`,0
even
SupplyTeamText:
dc.b `Supply Team`,0
even
SystemZV30Text:
dc.b `System Z V3.0`,0
even
systemZV40Text:
dc.b `System Z V4.0`,0
even
SystemZV50Text:
dc.b `System Z V5.0`,0
even
SystemZV51Text:
dc.b `System Z V5.1`,0
even
SystemZV53Text:
dc.b `System Z V5.3`,0
even
SystemZV54Text:
dc.b `System Z V5.4`,0
even
SystemZV61Text:
dc.b `System Z V6.1`,0
even
SystemZV64Text:
dc.b `System Z V6.4`,0
even
SystemZV65Text:
dc.b `System Z V6.5`,0
even
TargetText:
dc.b `TARGET`,0
even
TelecomText:
dc.b `Telecom`,0
even
TelStarText:
dc.b `TelStar`,0
even
TermigatorText:
dc.b `Termigator`,0
even
TerroristsText:
dc.b `Terrorists`,0
even
TFCRevengeText:
dc.b `T.F.C. Revenge`,0
even
TFCRevengeLoadWBText:
dc.b `T.F.C. Revenge LoadWB`,0
even
TimeBombText:
dc.b `TIME BOMB 1.0`,0
even
TimeBombV09Text:
dc.b `TIME BOMB V0.9`,0
even
TNKText:
dc.b `TNK!`,0
even
TomatesGentechnic10Text:
dc.b `TOMATES GENTECHNIC 1.0`,0
even
TomatesGentechnic20Text:
dc.b `TOMATES GENTECHNIC 2.0`,0
even
TravelingJackText:
dc.b `Traveling Jack`,0
even
TravelingJack2Text:
dc.b `Traveling Jack 2`,0
even
TravelingJackTextText:
dc.b `Traveling Jack-Text`,0
even
TURKText:
dc.b `TURK V1.3`,0
even
UltrafoxText:
dc.b `Ultrafox`,0
even
UKLamerStyleText:
dc.b `UK Lamer Style`,0
USSR492Text:
dc.b `USSR 492`,0
even
VCCofTNTText:
dc.b `VCC of TNT`,0
even
VIPHSText:
dc.b `VIPHS`,0
even
VirusConstructionSetText:
dc.b `Virus Construction Set`,0
even
VirusConstructionSetBootblockText:
dc.b `Virus Construction Set-Bootblock`,0
even
VirusSlayerText:
dc.b `Virus Slayer`,0
even
VirusV1Text:
dc.b `Virus V1`,0
even
WAFTText:
dc.b `WAFT`,0
even
WahnfriedText:
dc.b `WAHNFRIED`,0
even
WARHAWKText:
dc.b `WARHAWK`,0
even
WarsawAvengerText:
dc.b `Warsaw Avenger`,0
even
XenoText:
dc.b `Xeno`,0
even
xprzspeedV32Text:
dc.b `xprzspeed V3.2`,0
even
ZaccessV10Text:
dc.b `ZACCESS V1.0`,0
even
ZaccessV20Text:
dc.b `ZACCESS V2.0`,0
even
ZaccessV30Text:
dc.b `ZACCESS V3.0`,0
even
ZenkerText:
dc.b `ZENKER`,0
even
ZESTText:
dc.b `Z.E.S.T`,0
even
ZLXText:
dc.b `ZLX!`,0
even
ZombiText:
dc.b `Zombi I`,0